如何在 (La)Tex 中使用 truetype 字体,没有提供 map/encoding,但它们遵循 Unicode

如何在 (La)Tex 中使用 truetype 字体,没有提供 map/encoding,但它们遵循 Unicode

考虑:http://www.languagegeek.com/algon/cree

我了解所有关于 \XeTex 的知识,但那是用于输入实际的字形(即输入 Cree 字形“ma¨”。

而是:http://www.languagegeek.com/algon/cree可以下载 truetype 字体,但我们只知道编码遵循 Unicode。我想使用拉丁字符输入(如果您不是该语言的母语人士或对语言学感兴趣,这会更有用)。因此,我想定义 \ma = \char[number] = ¨ma¨ 的字形。

但要做到这一点,我没有 \char[number]。

所有用于 tex 字体(ttf2xxxx 等)的转换工具似乎都是针对拉丁编码的。一定有一种方法可以利用 Unicode 映射的知识来创建 \TeX [我在 Mageia Linux 上使用 TeXLive]

答案1

使用 xetex 或 luatex 比使用 pdftex 要容易得多。我在 Windows 上,似乎有一个带有此脚本的 Euphemia 字体(我无法读取,抱歉),所以我希望下面的内容看起来不错。

我从您引用的站点中摘取了几行代码,并使用 xetex 进行设置,首先直接复制字符,其次使用带有 ASCCI 名称的 tex 宏。我只是用 Unicode 名称减去前缀canadian syllablics并更改前缀(例如west-creeWC)来生成有效的 TeX 名称。

在此处输入图片描述

\documentclass{article}

\usepackage{fontspec}
\setmainfont{Euphemia}

\def\e{^^^^1401}
\def\i{^^^^1403}
\def\o{^^^^1405}
\def\a{^^^^140a}
\def\WCwe{^^^^140d}
\def\WCwi{^^^^140f}
\def\WCwa{^^^^1418}
\def\Facute{^^^^141f}
\def\Fgrave{^^^^1420}
\def\Ftophr{^^^^1422}
\def\Frighthr{^^^^1423}
\def\Fring{^^^^1424}
\def\Fdsvs{^^^^1426}
\def\Fshs{^^^^1428}
\def\pi{^^^^1431}
\def\po{^^^^1433}
\def\pa{^^^^1438}
\def\WCpwa{^^^^1445}
\def\WCp{^^^^144a}
\def\te{^^^^144c}
\def\ti{^^^^144e}
\def\to{^^^^1450}
\def\ta{^^^^1455}
\def\taa{^^^^1456}
\def\WCtwe{^^^^1458}
\def\ke{^^^^146b}
\def\ki{^^^^146d}
\def\ko{^^^^146f}
\def\ka{^^^^1472}
\def\WCkwa{^^^^147f}
\def\ci{^^^^148b}
\def\mi{^^^^14a5}
\def\mo{^^^^14a7}
\def\ma{^^^^14aa}
\def\maa{^^^^14ab}
\def\ni{^^^^14c2}
\def\no{^^^^14c4}
\def\na{^^^^14c7}
\def\se{^^^^14ed}
\def\si{^^^^14ef}
\def\saa{^^^^14f5}
\def\yi{^^^^1528}
\def\yo{^^^^152a}
\def\ya{^^^^152d}
\def\WCywa{^^^^153a}
\def\Syi{^^^^1541}
\def\FS{^^^^166e}

\begin{document}

\raggedright

ᐁᐏᐊᒋᒧᐢᑖᑕᑯᐠ ᐁᑭ ᐃᑖᐸᐦᑕᒫᐣ ᐁᐏᑕᒪᑯᐏᔭᕁ ᐁᑐᑫ ᑕᐣᓯ ᓂᑲᐣ ᐁᐏᐊᑕᔨᐢᐸᔨᐠ ᐊᓄᐦᐨ ᑭᒥᔭᐢᑲᒧᐸᔨᑭ ᐅᒪ
ᑲᒥᔪᐢᑲᒥ ᐏᑭᑎᒪᑭᓇᑯᐏᓯᐤ ᐊᔨᓯᔨᓂᐤ ᐊᐦᐳ ᑲᑯᓯᐟ ᑭᑕᒥᔺᔭᐤ᙮

\bigskip
\hrule
\bigskip

\WCwi\a\ci\mo\Ftophr\taa\ta\ko\Fgrave\space\e\ki\space\i\taa\pa\Fdsvs\ta
\maa\Frighthr\space\e\WCwi\ta\ma\ko\WCwi\ya\Syi\space\e\to\ke\space\ta
\Frighthr\si\space\ni\ka\Frighthr\space\e\WCwi\a\ta\yi\Ftophr\pa\yi\Fgrave
\space\a\no\Fdsvs\Fshs\space\ki\mi\ya\Ftophr\ka\mo\pa\yi\ki\space\o\ma
\space\ka\mi\yo\Ftophr\ka\mi\space\WCwi\ki\ti\ma\ki\na\ko\WCwi\si\Fring\space
\a\yi\si\yi\ni\Fring\space\a\Fdsvs\po\space\ka\ko\si\Facute\space\ki
\ta\mi\WCywa\ya\Fring\FS


\o\ma\space\WCwi\ta\ma\ko\WCwi\si\WCwi\Frighthr\space\ki\WCwi\ta\ma\ti
\na\WCwa\Fring\space\e\WCtwe\ma\ka\Syi\space\ki\ki\se\WCp\space\ka\WCwa\pa
\Fdsvs\ta\ma\Frighthr\FS\space\ki\ki\se\WCp\space\na\Frighthr\ta\space
\ni\ya\ni\Frighthr\space\ti\pa\Fdsvs\i\ka\Frighthr\space\e\a\yi\ta\pi
\ya\Frighthr\space\ma\mi\Syi\space\ta\pi\Ftophr\ko\Fshs\space\e\i\si
\na\ma\Frighthr\space\mi\si\WCwe\ya\pi\space\mi\ta\ta\Fdsvs\Facute\space
\na\na\to\Syi\space\e\i\si\na\WCkwa\Syi\space\pi\te\yi\Syi\space\e\ko
\ta\space\ni\WCwa\pa\ma\Fring\space\a\WCwi\ya\Fgrave\space\na\mo\ya\space
\ni\ni\si\ta\WCwi\na\WCwa\Fring\space\ma\ka\space\taa\pi\Ftophr\ko\Fshs\space
\e\i\si\na\WCwa\Fgrave\space\e\saa\WCpwa\Ftophr\te\yi\Fgrave\space\a
\ni\ma\space

\end{document}

我注意到我缺少了几个字符,规则后的第一行应该与第一行匹配,但希望这展示出一种基本技巧,并且对于能够读懂脚本的人来说会更容易。

答案2

带有图片的评论。

需要澄清的是,Xelatex 不仅仅用于直接输入字符。

在Xelatex中,您可以输入拉丁字符并排版其他字符。

一种方法是使用映射字体,例如,当使用特定字体时,我可以说字母“ke”映射到“ᑫ”。

映射字体

当其他脚本中没有可用的键盘或学习如何使用它需要时间时,这尤其有用。

\documentclass[12pt]{article}
\usepackage{xcolor}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\newfontface\translitc[Mapping=latin-to-cansyll,Colour=blue]{Noto Sans Canadian Aboriginal}
\begin{document}
\section{Sample}
\Large
ke {\translitc ke} ki {\translitc ki} ko {\translitc ko} ka {\translitc ka }

\end{document}

映射文件如下所示:

; TECkit mapping for TeX input conventions <-> Unicode characters

LHSName "latin-to-cansyll" 
RHSName "UNICODE"

pass(Unicode)

; ligatures from Knuth's original CMR fonts
U+002D U+002D           <>  U+2013  ; -- -> en dash
U+002D U+002D U+002D    <>  U+2014  ; --- -> em dash

U+0027          <>  U+2019  ; ' -> right single quote
U+0027 U+0027   <>  U+201D  ; '' -> right double quote
U+0022           >  U+201D  ; " -> right double quote

U+0060          <>  U+2018  ; ` -> left single quote
U+0060 U+0060   <>  U+201C  ; `` -> left double quote

U+0021 U+0060   <>  U+00A1  ; !` -> inverted exclam
U+003F U+0060   <>  U+00BF  ; ?` -> inverted question

; additions supported in T1 encoding
U+002C U+002C   <>  U+201E  ; ,, -> DOUBLE LOW-9 QUOTATION MARK
U+003C U+003C   <>  U+00AB  ; << -> LEFT POINTING GUILLEMET
U+003E U+003E   <>  U+00BB  ; >> -> RIGHT POINTING GUILLEMET


U+006B U+0065   <> U+146B     ;  ᑫ ke
U+006B U+0069   <> U+146D     ;  ᑭ ki
U+006B U+006F   <> U+146F     ;  ᑯ ko
U+006B U+0061   <> U+1472     ;  ᑲ ka

它是一个带有扩展名的文本文件.map,以 编译为二进制.tec文件teckit_compile.exe,并通过字体的选项.tec调用该文件。Mapping=

相关内容