| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 | 
//====================================================
//  Portuguese/Portugal  - based on Portuguese/Brazil
//====================================================
phoneme &
  vowel starttype #@ endtype #@
  length 180
  ipa ɐ
  FMT(vowel/a#_3)
  unstressed
endphoneme
phoneme &/       // Used for final "a" when next word starts with "a"
  vowel starttype #@ endtype #@
  length 180
  ipa ɐ
  IF nextPh(isVowel) THEN
    ChangePhoneme(NULL)
  ENDIF
  FMT(vowel/a#_3)
endphoneme
phoneme a
  vowel starttype #a endtype #a
  length 180
  ChangeIfNotStressed(&)
  FMT(vowel/a_2)
endphoneme
phoneme &~
  vowel  starttype #e endtype #@
  ipa ɐU+0303
  length 240
  FMT(vnasal/ee_n2)
endphoneme
phoneme &U~
  vowel  starttype #@ endtype #u
  ipa ɐU+0303ʊU+0303
  length 240
  FMT(vnasal/a#u_n)
endphoneme
phoneme E
  vowel starttype #e endtype #e
  length 180
  ChangeIfUnstressed(y)
  FMT(vowel/e_mid)
endphoneme
phoneme e
  vowel starttype #e endtype #e
  length 180
  ChangeIfUnstressed(y)
  FMT(vowel/e)
endphoneme
phoneme y
  vowel starttype #@ endtype #@
  length 130
  ipa ɨ
  FMT(vowel/i#_5)
endphoneme
phoneme i
  vowel starttype #i endtype #i
  length 170
  IfNextVowelAppend(;)
  FMT(vowel/i)
endphoneme
phoneme i/            // changes to NULL before a vowel
  vowel starttype #i endtype #i
  length 130
  ipa ɨ
  IF nextPh(isVowel) THEN
    ChangePhoneme(NULL)
  ENDIF
  IfNextVowelAppend(;)
  FMT(vowel/i#_5)
endphoneme
phoneme O
  vowel starttype #o endtype #o
  length 180
//  ChangeIfNotStressed(o)
  FMT(vowel/0_2)
endphoneme
phoneme o
  vowel starttype #o endtype #o
  length 180
  ChangeIfNotStressed(u)
  FMT(vowel/o)
endphoneme
phoneme u
  vowel starttype #u endtype #u
  length 180
  FMT(vowel/u_6)
endphoneme
phoneme U
  vowel starttype #u endtype #u
  length 130
  IF thisPh(isWordEnd) AND thisPh(isAfterStress) AND nextPh(isVowel) THEN
    ChangePhoneme(w)
  ENDIF
  FMT(vowel/u_6)
endphoneme
phoneme EU
  vowel starttype #e endtype #u
  length 230
  FMT(vdiph/eeu_2)
endphoneme
phoneme w
  import_phoneme base2/w2
endphoneme
phoneme x      // [r] for Portugal
  liquid
  trill
  ipa ʁ
  lengthmod 7
  Vowelin f1=0  f2=1500 -400 400  f3=-400 80
  IF nextPh(isNotVowel) THEN
    ChangePhoneme(r/)
  ENDIF
  FMT(vwl_fr/@R) addWav(r3/rx, 120)
endphoneme
phoneme R    // for Portugal this is same the as [r]
  import_phoneme pt/r
endphoneme
phoneme s#     // This is [s] for Brazil, [S] for Portugal
  CALL base/S
  ipa ʃ
endphoneme
 |