
//====================================================
//  Portuguese/Portugal  - based on Portuguese/Brazil
//====================================================

// This phonemes file is refered as "pt-pt" in language and voice files.
// The phonemes specified in the file `ph_pt_brazil` are also used here.


// Vowels

phoneme &
  vwl starttype #@ endtype #@
  length 180
  ipa ɐ
  FMT(vowel/a#_3)
  unstressed
endphoneme

phoneme a
  vwl starttype #a endtype #a
  length 180
  ChangeIfNotStressed(&)
  FMT(vowel/a_2)
endphoneme

phoneme e
  vwl starttype #e endtype #e
  length 180
  ChangeIfUnstressed(y)
  FMT(vowel/e)
endphoneme

phoneme E
  vwl starttype #e endtype #e
  length 180
  ChangeIfUnstressed(y)
  FMT(vowel/e_mid)
endphoneme

phoneme i/            // changes to NULL before a vowel
  vwl starttype #i endtype #i
  length 130
  ipa ɨ
  IF nextPh(isVowel) THEN
    ChangePhoneme(NULL)
  ENDIF
  IfNextVowelAppend(;)
  FMT(vowel/i#_5)
endphoneme

phoneme I/           // hiding the very short [i] used for epenthesis
  vwl starttype #i endtype #i
  ChangePhoneme(NULL)
endphoneme

phoneme y            // old unstressed /i/ kept for backward compatibility
  CALL pt/i"
endphoneme

phoneme o
  vwl starttype #o endtype #o
  length 180
  ChangeIfNotStressed(u)
  FMT(vowel/o)
endphoneme

phoneme O
  vwl starttype #o endtype #o
  length 180
  FMT(vowel/0_2)
endphoneme

phoneme u
  vwl starttype #u endtype #u
  length 180
  FMT(vowel/u_6)
endphoneme

phoneme U
  vwl starttype #u endtype #u
  length 130
  IF thisPh(isWordEnd) AND thisPh(isUnstressed) THEN
    IF NOT prevPh(w) AND nextPh(isVowel) THEN
      ChangePhoneme(w)
    ENDIF
  ENDIF
  FMT(vowel/u_6)
endphoneme


// Nasal Vowels

phoneme &~
  vwl  starttype #e endtype #@
  ipa ɐU+0303
  length 240
  FMT(vnasal/ee_n2)
endphoneme


// Diphthongs

phoneme EU
  vwl starttype #e endtype #u
  length 230
  FMT(vdiph/eeu_2)
endphoneme


// Nasal Diphthongs

phoneme &U~
  vwl  starttype #@ endtype #u
  ipa ɐU+0303ʊU+0303
  length 240
  IF thisPh(isDiminished) THEN
    FMT(vnasal/au_n)
  ENDIF
  FMT(vnasal/a#u_n)
endphoneme


// Glides

phoneme w
  import_phoneme base2/w2
endphoneme


// Rhotic Consonants

phoneme x            // old strong /R/ kept for backward compatibility
  liquid trl
  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


// Special Consonants for Dialectal Variation

phoneme l#           // special phoneme for /l/ or /w/ in coda
  virtual
  ChangePhoneme(l)
endphoneme

phoneme s#           // special phoneme for /S/ or /Z/ in coda
  virtual
  IF nextPh(isVowel) THEN
    ChangePhoneme(z)
  ELIF nextPh(isVoiced) THEN
    ChangePhoneme(Z)
  ENDIF
  ChangePhoneme(S)
endphoneme

phoneme R#           // special phoneme for strong /R/ in onset
  virtual
  ChangePhoneme(x)
endphoneme

phoneme r#           // special phoneme for weak /r/ in coda
  virtual
  ChangePhoneme(*)
endphoneme

phoneme d#           // special phoneme for /d/ or /dZ/
  virtual
  ChangePhoneme(d)
endphoneme

phoneme t#           // special phoneme for /t/ or /tS/
  virtual
  ChangePhoneme(t)
endphoneme
