Both Vietnamese orthography and Penkyamp, a Cantonese Romanization, use the coda, be it semivowel or consonant, to indicate vowel length (or vowel quality with implied vowel length). In this article, we will be using Chao's analysis for Cantonese: that [ɛ] and [e~ɪ], as well as [ɔ] and [o~ʊ~ɵ], are contrasting pairs.
Penkyamp relies on the coda to indicate vowel length, or for the case of Cantonese, the term "vowel quality" would be more accurate. While Vietnamese does so to an extent, and does not totally rely on the coda, although it does for a few cases: for instance, <ai> and <ay> represent [a:ɪ] and [aɪ] respectively. For some cases, there is no phonemic vowel length difference (possibly not even phonetically), but these are implied, like for <eo> and <êu>, which represent [ɛʊ] and [eʊ] respectively.
(Note that when I say "implied vowel length", for the case of French, I refer to /e/ being "long", the English /ɑ/ being "long", as well as the Cantonese /ɛ/ being "long". Some are analysed as phonetically long, while others aren't)
Back on track, Let us apply this convention of marking vowel quality with the coda onto the Pac-va-chi (the Cantonese Romanization). The basic form of the Pac-va-chi, abbreviated as "PVC", could be seen in the middle. Vietnamese orthography uses <y> and <u> to indicate "short" vowels, and <i> and <o> to indicate "long" ones. Penkyamp has a similar convention, though it uses the vowels <i> and <u> to indicate a "long" vowel and the consonants <y> and <w> to indicate "short" ones. So, for example:
Vietnamese: long: ai, ao; short: ay, au
Penkyamp: long: ai, au; short: ay, aw
Since the use of <y> and <w> has already been done to Cantonese, I have went with the Vietnamese convention, shown in the first table at the top. While diacritics would then be unneeded, the double asterisks indicate diphthongs that could carry diacritics for extra clarification, e.g. <ây> for "ay". This however, means that <eo> is used for /ɛ(:)u/, and thus /œ/ is written as <ơ> instead. This convention is based off of how the sound would appear to speakers of a language that lacks the sound, as well as a Romanization called Yựtyựt. But a bigger reason for this is that /œ/ is sometimes written as just <o> in the modern Romanization of Macau, hinting that it used to be a letter O with some form of diacritic. This is used in unison with "ư" to then indicate fronting, and speakers of languages that do not have the /y/ sound may perceive it as "something between [i] and [u]" or "[u]-like".
A note on Penkyamp: the "short" a, e and o, which are marked with an asterisk in the table at the bottom, always carry a final voiceless consonant (including <mp>, <nt> and <nk>) or semivowel <y>/<w>. Thus, they never [orthographically] conflict with the long vowels, which may be used alone in a rhyme.