summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/lualatex/unitipa/unitipa.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/unitipa/unitipa.sty')
-rw-r--r--Master/texmf-dist/tex/lualatex/unitipa/unitipa.sty379
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'.