diff options
author | Karl Berry <karl@freefriends.org> | 2020-09-22 22:00:27 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-09-22 22:00:27 +0000 |
commit | b21d49ac18c86aefd1939eddaf5526e085b9705b (patch) | |
tree | 2f8c3c7cc071d7018fb79927ecd51b13442116cd /Master/texmf-dist/tex | |
parent | ff7026f6d3cd048c711e3d83af19f90caf092ba8 (diff) |
unitipa (21sep20)
git-svn-id: svn://tug.org/texlive/trunk@56408 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/lualatex/unitipa/unitipa.sty | 379 |
1 files changed, 379 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/lualatex/unitipa/unitipa.sty b/Master/texmf-dist/tex/lualatex/unitipa/unitipa.sty new file mode 100644 index 00000000000..a6a8a4fd211 --- /dev/null +++ b/Master/texmf-dist/tex/lualatex/unitipa/unitipa.sty @@ -0,0 +1,379 @@ +%% +%% This is file `unitipa.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% unitipa.dtx (with options: `package') +%% +%% --------------------------------------------------------------------------- +%% Package: unitipa +%% Author: Niranjan +%% Description: TIPA typefaces with Unicode characters. +%% Repository: https://gitlab.com/niranjanvikastambe/unitipa +%% Bug tracker: https://gitlab.com/niranjanvikastambe/unitipa/-/issues +%% License: The LaTeX Project Public License v1.3c or later. +%% --------------------------------------------------------------------------- +%% This work may be distributed and/or modified under the conditions of the +%% LaTeX Project Public License, either version 1.3c of this license or (at +%% your option) any later version. +%% +%% The latest version of this license is in +%% +%% http://www.latex-project.org/lppl.txt. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Niranjan. +%% +%% This work consists of the files unitipa.dtx +%% unitipa.ins +%% and the derived file unitipa.sty. +%% --------------------------------------------------------------------------- +%% +\def\unitipaPackageName{unitipa} +\def\unitipaPackageVersion{0.1} +\def\unitipaPackageDate{2020/21/09} +\def\unitipaPackageDescription{TIPA typefaces with Unicode characters.} + +\ProvidesPackage{unitipa}[2020/21/09 v0.1 +TIPA typefaces with unicode characters] +\RequirePackage{tipa} +\RequirePackage{graphicx} +\RequirePackage{newunicodechar} +\RequirePackage{fontspec} +\RequirePackage{pgfkeys} +\pgfkeys{ + unitipa/.is family, unitipa/.cd, + ipafont/.code={\setfontfamily{\ipa}{#1}}, + ipafont=DoulosSIL, +} +\DeclareTextFontCommand{\ipatext}{\ipa} +\def\unitipa@ipafont#1{\pgfkeys{unitipa/.cd,#1}} +\DeclareOption*{\expandafter\unitipa@ipafont\expandafter{\CurrentOption}} +\newif\ifnodiacritics +\nodiacriticsfalse +\DeclareOption{nodiacritics}{\nodiacriticstrue} +\ProcessOptions\relax +\ifnodiacritics +\relax +\else +\RequirePackage{iftex} +\RequirePackage{luacode} +\RequireLuaTeX +%% Dependent diacritic marks +\begin{luacode} + function voiceless ( s ) + s = unicode.utf8.gsub ( s , '(%a)̥', '\\textsubring{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + voiceless, "voiceless")} +\begin{luacode} + function voiced ( s ) + s = unicode.utf8.gsub ( s , '(%a)̬', '\\textsubwedge{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + voiced, "voiced")} +\begin{luacode} + function morerounded ( s ) + s = unicode.utf8.gsub ( s , '(%a)̹', '\\textsubrhalfring{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + morerounded, "morerounded")} +\begin{luacode} + function lessrounded ( s ) + s = unicode.utf8.gsub ( s , '(%a)̜', '\\textsublhalfring{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + lessrounded, "lessrounded")} +\begin{luacode} + function advanced ( s ) + s = unicode.utf8.gsub ( s , '(%a)̟', '\\textsubplus{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + advanced, "advanced")} +\begin{luacode} + function retracted ( s ) + s = unicode.utf8.gsub ( s , '(%a)̠', '\\textsubbar{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + retracted, "retracted")} +\begin{luacode} + function midcentralized ( s ) + s = unicode.utf8.gsub ( s , '(%a)̽', '\\textovercross{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + midcentralized, "midcentralized")} +\begin{luacode} + function syllabic ( s ) + s = unicode.utf8.gsub ( s , '(%a)̩', '\\textsyllabic{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + syllabic, "syllabic")} +\begin{luacode} + function nonsyllabic ( s ) + s = unicode.utf8.gsub ( s , '(%a)̯', '\\textsubarch{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + nonsyllabic, "nonsyllabic")} +\begin{luacode} + function breathyvoiced ( s ) + s = unicode.utf8.gsub ( s , '(%a)̤', '\\textsubumlaut{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + breathyvoiced, "breathyvoiced")} +\begin{luacode} + function linguolabial ( s ) + s = unicode.utf8.gsub ( s , '(%a)̼', '\\textseagull{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + linguolabial, "linguolabial")} +\begin{luacode} + function velarized ( s ) + s = unicode.utf8.gsub ( s , '(%a)̴', '\\textsuperimposetilde{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + velarized, "velarized")} +\begin{luacode} + function raised ( s ) + s = unicode.utf8.gsub ( s , '(%a)̝', '\\textraising{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + raised, "raised")} +\begin{luacode} + function lowered ( s ) + s = unicode.utf8.gsub ( s , '(%a)̞', '\\textlowering{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + lowered, "lowered")} +\begin{luacode} + function advancedtr ( s ) + s = unicode.utf8.gsub ( s , '(%a)̘', '\\textadvancing{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + advancedtr, "advancedtr")} +\begin{luacode} + function retractedtr ( s ) + s = unicode.utf8.gsub ( s , '(%a)̙', '\\textretracting{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + retractedtr, "retractedtr")} +\begin{luacode} + function dental ( s ) + s = unicode.utf8.gsub ( s , '(%a)̪', '\\textsubbridge{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + dental, "dental")} +\begin{luacode} + function apical ( s ) + s = unicode.utf8.gsub ( s , '(%a)̺', '\\textinvsubbridge{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + apical, "apical")} +\begin{luacode} + function laminal ( s ) + s = unicode.utf8.gsub ( s , '(%a)̻', '\\textsubsquare{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + laminal, "laminal")} +\begin{luacode} + function unaudible ( s ) + s = unicode.utf8.gsub ( s , '(%a)̚', '%1\\textcorner' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + unaudible, "unaudible")} +%% Tie bars +\begin{luacode} + function tiebarup ( s ) + s = unicode.utf8.gsub ( s , '(%a)͡(%a)', '\\texttoptiebar{%1%2}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + tiebarup, "tiebarup")} +\begin{luacode} + function tiebardown ( s ) + s = unicode.utf8.gsub ( s , '(%a)͜(%a)', '\\textbottomtiebar{%1%2}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + tiebardown, "tiebardown")} +\begin{luacode} + function risefall ( s ) + s = unicode.utf8.gsub ( s , '(%a)᷈', '\\textrisefall{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + risefall, "risefall")} +\begin{luacode} + function rising ( s ) + s = unicode.utf8.gsub ( s , '(%a)᷄', '\\texthighrise{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + rising, "rising")} +\begin{luacode} + function falling ( s ) + s = unicode.utf8.gsub ( s , '(%a)᷅', '\\textlowrise{%1}' ) + return s + end +\end{luacode} +\directlua{luatexbase.add_to_callback("process_input_buffer", + falling, "falling")} +\fi +%% Pulmonic Consonants +%% Plosives +\newunicodechar{ʈ}{\textrtailt} +\newunicodechar{ɖ}{\textrtaild} +\newunicodechar{ɟ}{\textbardotlessj} +\newunicodechar{ɢ}{\textscg} +\newunicodechar{ʔ}{\textglotstop} +%% Nasals +\newunicodechar{ɱ}{\textltailm} +\newunicodechar{ɳ}{\textrtailn} +\newunicodechar{ɴ}{\textscn} +%% Trills +\newunicodechar{ʙ}{\textscb} +\newunicodechar{ʀ}{\textscr} +%% Taps or flaps +\newunicodechar{ⱱ}{\ipatext{ⱱ}} %% Sorry for the bad typography! +\newunicodechar{ɾ}{\textfishhookr} +\newunicodechar{ɽ}{\textrtailr} +%% Fricatives +\newunicodechar{ɸ}{\textphi} +\newunicodechar{β}{\textbeta} +\newunicodechar{θ}{\texttheta} +\newunicodechar{ʃ}{\textesh} +\newunicodechar{ʒ}{\textyogh} +\newunicodechar{ʂ}{\textrtails} +\newunicodechar{ʐ}{\textrtailz} +\newunicodechar{ʝ}{\textctj} +\newunicodechar{ɣ}{\textgamma} +\newunicodechar{χ}{\textchi} +\newunicodechar{ʁ}{\textinvscr} +\newunicodechar{ʕ}{\textrevglotstop} +\newunicodechar{ɦ}{\texthth} +%% Lateral fricatives +\newunicodechar{ɬ}{\textbeltl} +\newunicodechar{ɮ}{\textlyoghlig} +%% Approximants +\newunicodechar{ʋ}{\textscriptv} +\newunicodechar{ɹ}{\textturnr} +\newunicodechar{ɻ}{\textturnrrtail} +\newunicodechar{ɰ}{\textturnmrleg} +%% Lateral approximants +\newunicodechar{ɭ}{\textrtaill} +\newunicodechar{ʎ}{\textturny} +\newunicodechar{ʟ}{\textscl} +%% Affricates +\newunicodechar{ʧ}{\textteshlig} +\newunicodechar{ʤ}{\textdyoghlig} +\newunicodechar{ʦ}{\texttslig} +\newunicodechar{ʣ}{\textdzlig} +%% Vowels +%% Close +\newunicodechar{ɨ}{\textbari} +\newunicodechar{ʉ}{\textbaru} +\newunicodechar{ɯ}{\textturnm} +%% Near-close +\newunicodechar{ɪ}{\textsci} +\newunicodechar{ʏ}{\textscy} +\newunicodechar{ʊ}{\textupsilon} +%% Close-mid +\newunicodechar{ɵ}{\textbaro} +\newunicodechar{ɤ}{\textramshorns} +%% Open-mid +\newunicodechar{ɛ}{\textepsilon} +\newunicodechar{ɜ}{\textrevepsilon} +\newunicodechar{ɞ}{\reflectbox{\textcloseepsilon}} %% Latest changes +\newunicodechar{ʌ}{\textturnv} +\newunicodechar{ɔ}{\textopeno} +%% Near-open +\newunicodechar{ɐ}{\textturna} +\newunicodechar{ɶ}{\textscoelig} +\newunicodechar{ɒ}{\textturnscripta} +%% Non-Pulmonic +\newunicodechar{ʘ}{\textbullseye} +\newunicodechar{ǀ}{\textpipe} +\newunicodechar{ǃ}{\textipa{!}} +\newunicodechar{ǂ}{\textdoublebarpipe} +\newunicodechar{ǁ}{\textdoublepipe} +%% Voiced Implosives +\newunicodechar{ɓ}{\texthtb} +\newunicodechar{ɗ}{\texthtd} +\newunicodechar{ʄ}{\texthtbardotlessj} +\newunicodechar{ɠ}{\texthtg} +\newunicodechar{ʛ}{\texthtscg} +\newunicodechar{ʼ}{'} +%% Suprasegmentals +\newunicodechar{ˈ}{\textprimstress} +\newunicodechar{ˌ}{\textsecstress} +\newunicodechar{ː}{\textlengthmark} +\newunicodechar{ˑ}{\texthalflength} +\newunicodechar{ʍ}{\textturnw} +\newunicodechar{ɥ}{\textturnh} +\newunicodechar{ʜ}{\textsch} +\newunicodechar{ʢ}{\textbarrevglotstop} +\newunicodechar{ʡ}{\textbarglotstop} +\newunicodechar{ɕ}{\textctc} +\newunicodechar{ʑ}{\textctz} +\newunicodechar{ɺ}{\textturnlonglegr} +\newunicodechar{ɧ}{\texththeng} +%% Diacritics +\newunicodechar{ʰ}{\textsuperscript{h}} +\newunicodechar{ʱ}{\textsuperscript{ɦ}} +\newunicodechar{ʷ}{\textsuperscript{w}} +\newunicodechar{ʲ}{\textsuperscript{j}} +\newunicodechar{ˠ}{\textsuperscript{ɣ}} +\newunicodechar{ˤ}{\textsuperscript{ʕ}} +%% Tones independent diacritics +\newunicodechar{ꜜ}{\textdownstep} +\newunicodechar{ꜛ}{\textupstep} +%% \newunicodechar{︎↗}{\textglobrise} %% Not working :'( +%% \newunicodechar{↘}{\textglobfall} %% Need help here +\endinput +%% +%% End of file `unitipa.sty'. |