创建我自己的 XeTeX 字体映射

创建我自己的 XeTeX 字体映射

我正在尝试创建映射文件,以便在 Plain XeTeX 中使用 Cambria Math 斜体书法和双击字母。但是,我无法这样做。这是我尝试基于 tex-text.map 创建斜体映射的内容:

; Math italic conversion for Cambria Math (and the like)

LHSName "Math-Italic"
RHSName "UNICODE"

[...]    

pass(Unicode)

; Latin big and SMALL letters
U+0041   <> U+1D434 ; A
U+0042   <> U+1D435 ; B
U+0043   <> U+1D436 ; C
U+0044   <> U+1D437 ; D
U+0045   <> U+1D438 ; E
U+0046   <> U+1D434 ; F
U+0047   <> U+1D439 ; G
U+0048   <> U+1D43A ; H
U+0049   <> U+1D43B ; I
U+004A   <> U+1D43C ; J
U+004B   <> U+1D43D ; K
U+004C   <> U+1D43E ; L
U+004D   <> U+1D43F ; M
U+004E   <> U+1D440 ; N
U+004F   <> U+1D441 ; O
U+0050   <> U+1D442 ; P
U+0051   <> U+1D443 ; Q
U+0052   <> U+1D444 ; R
U+0053   <> U+1D445 ; S
U+0054   <> U+1D446 ; T
U+0055   <> U+1D447 ; U
U+0056   <> U+1D448 ; V
U+0057   <> U+1D44A ; W
U+0058   <> U+1D44B ; X
U+0059   <> U+1D44C ; Y
U+005A   <> U+1D44D ; Z

U+0061   <> U+1D44E ; a
U+0062   <> U+1D44F ; b
U+0063   <> U+1D450 ; c
U+0064   <> U+1D451 ; d
U+0065   <> U+1D452 ; e
U+0066   <> U+1D453 ; f
U+0067   <> U+1D454 ; g
U+0068   <> U+210E  ; h
U+0069   <> U+1D456 ; i
U+006A   <> U+1D457 ; j
U+006B   <> U+1D458 ; k
U+006C   <> U+1D459 ; l
U+006D   <> U+1D45A ; m
U+006E   <> U+1D45B ; n
U+006F   <> U+1D45C ; o
U+0070   <> U+1D45D ; p
U+0071   <> U+1D45E ; q
U+0072   <> U+1D45F ; r
U+0073   <> U+1D460 ; s
U+0074   <> U+1D461 ; t
U+0075   <> U+1D462 ; u
U+0076   <> U+1D463 ; v
U+0077   <> U+1D464 ; w
U+0078   <> U+1D465 ; x
U+0079   <> U+1D466 ; y
U+007A   <> U+1D467 ; z

; Greek big and SMALL letters

;𝛳
U+0391   <> U+1D6E2 ; Alpha
U+0392   <> U+1D6E3 ; Betha
U+0393   <> U+1D6E4 ; Gamma
U+0394   <> U+1D6E5 ; Delta
U+0395   <> U+1D6E6 ; Epsilon
U+0396   <> U+1D6E7 ; Zeta
U+0397   <> U+1D6E8 ; Eta
U+0398   <> U+1D6E9 ; Theta
U+0399   <> U+1D6EA ; Iota
U+039A   <> U+1D6EB ; Kappa
U+039B   <> U+1D6EC ; Lambda
U+039C   <> U+1D6ED ; Mu
U+039D   <> U+1D6EE ; Nu
U+039E   <> U+1D6EF ; Xi
U+039F   <> U+1D6F0 ; Omicron
U+03A0   <> U+1D6F1 ; Pi
U+03A1   <> U+1D6F2 ; Ro
U+03A3   <> U+1D6F4 ; Sigma
U+03A4   <> U+1D6F5 ; Tau
U+03A5   <> U+1D6F6 ; Upsilon
U+03A6   <> U+1D6F7 ; Phi
U+03A7   <> U+1D6F8 ; Chi
U+03A8   <> U+1D6F9 ; Psi
U+03A9   <> U+1D6FA ; Omega

U+03B1   <> U+1D6FC ; alpha
U+03B2   <> U+1D6FD ; betha
U+03B3   <> U+1D6FE ; gamma
U+03B4   <> U+1D6FF ; delta
U+03B5   <> U+1D600 ; varepsilon
U+03B6   <> U+1D701 ; zeta
U+03B7   <> U+1D702 ; eta
U+03B8   <> U+1D703 ; theta
U+03B9   <> U+1D704 ; iota
U+03BA   <> U+1D705 ; kappa
U+03BB   <> U+1D706 ; lambda
U+03BC   <> U+1D707 ; mu
U+03BD   <> U+1D708 ; nu
U+03BE   <> U+1D709 ; xi
U+03BF   <> U+1D70A ; omicron
U+03C0   <> U+1D70B ; pi
U+03C1   <> U+1D70C ; ro
U+03C3   <> U+1D70D ; varsigma
U+03C3   <> U+1D70E ; sigma
U+03C4   <> U+1D70F ; tau
U+03C5   <> U+1D710 ; upsilon
U+03C6   <> U+1D711 ; phi
U+03C7   <> U+1D712 ; chi
U+03C8   <> U+1D713 ; psi
U+03C9   <> U+1D714 ; omega
U+03F5   <> U+1D715 ; epsilon
U+03D1   <> U+1D717 ; vartheta
U+03F0   <> U+1D718 ; varkappa
U+03D5   <> U+1D719 ; varphi
U+03F1   <> U+1D71A ; varrho
U+03D6   <> U+1D71B ; varpi

我做错了什么?

答案1

我意识到我做错了什么。首先,我不需要当前标记为 [...] 的部分,我只需要转换>而不是<>

但最重要的是,该地图文件不能直接使用,我需要将其转换为文件*.tec˙。但这本身还不够,需要将其放在 下texmf/fonts/misc/xetex/fontmapping。您可能还需要复制地图文件,我还没有尝试过没有它。转换是使用 TECkit 完成的。

但是,TECkit 转换器不随 MiKTeX 提供(或者甚至可能不随 TeX Live 提供),因此你需要从TECkit 下载页面

需要使用的命令:

teckit_compile <file>.map -o <file>.tec

如果这不起作用(因为这不是我上次尝试的)或者它不能让你满意,你可以选择使用 SILConverters,你可以从SILConverters 页面下载部分,也就是可以显示哪些字符将被翻译成哪些字符,但这仅适用于 Windows。(我需要将 DLL 文件从第一个下载的文件复制到程序文件夹,因此可能因为这个原因而相同。)

不要忘记刷新文件名数据库。您可以使用 来执行此操作texhash

答案2

这不是对你问题的确切回答,但我认为你做错了。你应该使用\XeTeXmathchardef和类似的,例如:

\XeTeXmathchardef\alpha = "1 "1 "1D6FC

查看XeTeX 参考语法。

相关内容