phonetic symbols in vertical Chinese writing
I do not know how do others type phonetic symbols in vertical Chinese writing. The symbol do not come out. Here is an example:
\documentclass[12pt,twoside,fleqn,openleft]{book}
\usepackage{fontspec} \usepackage[BoldFont,SlantFont,CheckSingle,AutoFallBack=true]{xeCJK} \usepackage{CJKnumb} \newfontlanguage{Chinese}{CHN}
\setmainfont{Alegreya} \setCJKmainfont[Script=CJK,Language=Chinese,Vertical=RotatedGlyphs,RawFeature=vertical, BoldFont=ipamjm.ttf,ItalicFont=EDUSTD-15.TTF, BoldItalicFont=DFT_Z3.TTC,SmallCapsFont=DFT_L5.TTC]{MINGLIU.TTC}
\setCJKfallbackfamilyfont{rm}[Script=CJK,Language=Chinese,Vertical=RotatedGlyphs,RawFeature=vertical, BoldFont=DFT_TX3.TTC,ItalicFont=EDUSTD-15.TTF, BoldItalicFont=MINGLIU.TTC]{HANAMINA.TTF}
\newcommand*\CJKmovesymbol[1]{\raise .35em\hbox{#1}} \newcommand*\CJKmove{\punctstyle{kaiming}% do not modify the spacing between punctuations \let\CJKsymbol\CJKmovesymbol \let\CJKpunctsymbol\CJKsymbol}
\usepackage{everypage} \AddEverypageHook{\CJKmove\special{pdf: put @thispage <</Rotate 90>>}}
\begin{document}
黜陟,音 ㄔㄨ ˋ ㄓ ˋ。
\end{document}
我還是直接寫中文了。 您的問題應該是指「注音符號沒問題,但聲調符號無法顯示」吧?這跟昨天的問題有些類似。原因很簡單,注音符號的聲調符號,在xeCJK這裡,預設為西文字符,使用西文字型輸出;但您使用的西文字型Alegreya中,並未包含這些聲調符號(實際上是不全,但恰好沒有這裡用到的去聲符號),自然無法顯示。解決辦法是利用xeCJK的功能,將這些聲調符號聲明為CJK字符(若換用其他收錄這些聲調符號的西文字型、而非改變其字符類別,雖可顯示,但因直排時西文旋轉九十度,所以這些聲調符號也會和西文一個方向,與注音符號方向不同,效果錯誤):
\ExplSyntaxOn
\xeCJKsetcharclass{"02C7}{"02C7}{\xeCJK_class_num:n{FullRight}}
\xeCJKsetcharclass{"02C9}{"02C9}{\xeCJK_class_num:n{FullRight}}
\xeCJKsetcharclass{"02CA}{"02CB}{\xeCJK_class_num:n{FullRight}}
\xeCJKsetcharclass{"02D9}{"02D9}{\xeCJK_class_num:n{FullRight}}
\ExplSyntaxOff
(註:FullRight類未必合適,僅作示例。注意把正文中聲調符號前邊的空格去掉。)
不過,注音符號的聲調符號應位於最後一個注音符號的右上方(輕聲除外;直排橫排均如此),目前似乎尚未有處理注音符號的宏包,所以聲調符號現在(直排時)都是在注音符號正下方:
另外,直排時,漢字與西文基線不同,如果使用了西文(包括阿拉伯數字,這幾乎是不可避免的),那麼還需要調整基線。XeTeX對直排支援並不好,中文直排LaTeX最好還是使用日本的upLaTeX或者中國基於此的衍生版ApLaTeX。
最後,您這代碼,雖然能編譯過去,但是寫得不妥的地方太多了。
這個方法出來的缺點是那個第幾聲在下面。有沒有辦法弄到右邊...
在歸化中國與歸化日本中間我想還是選擇歸化日本好了 :paintbrush: MikTeX 也沒有ApLaTex
請問我如何能知道一個字型有沒有提供 GSUB 功能?
失敬了,原來滿庭芳還是高手。請多多指教。請問我的代碼還該如何修改?
checkout this project: https://gitee.com/songjinghe/hall-of-light/
which currently use xelatex and provide both vertical & horizontal version of the content.
un-common charactors are displayed by different fonts which contains that charactor.
Also as @Man-Ting-Fang said, I have to adjust the baseline when combining different fonts
goodluck~
Thank you for this update. I have registered, however, I do not know what that is? Is it only for a particular book or a development of a general method? Furthermore, I do not know how to download anything from there.
以下内容截自https://gitee.com/songjinghe/hall-of-light/blob/master/main.tex 该文件展示了
- 使用xelatex进行中文的直排
- 使用多种字体显示非常见字符
希望可以帮到你~
%!TEX encoding = utf8
%!TEX program = xelatex
\documentclass[UTF8, nofont, landscape]{ctexbook}
%% Vertical settings------------------
%% Rotate PDF pages
\usepackage{atbegshi}
\AtBeginShipout{%
\global\setbox\AtBeginShipoutBox\vbox{%
\special{pdf: put @thispage <</Rotate 90>>}%
\box\AtBeginShipoutBox
}%
}%
%% Font Vertical Mode
\defaultCJKfontfeatures{RawFeature={vertical:+vert}}
%% Common Font Settings
\setCJKmainfont[BoldFont=Adobe Heiti Std,ItalicFont=Adobe Kaiti Std]{Adobe Song Std}
\setCJKsansfont{Adobe Heiti Std}
\setCJKmonofont{Adobe Fangsong Std}
%% Adjust baseline if needed (when you use some other fonts \ytzfz, see below)
\makeatletter
\newcommand*{\shifttext}[2]{%
\settowidth{\@tempdima}{#2}%
\makebox[\@tempdima]{\hspace*{#1}#2}%
}%
\makeatother
\newcommand\ytza[1]{\shifttext{-3.5pt}{\ytzfz #1}}
%% 以下字体用于补充顯示Adobe缺失的漢字(虽然它们每个包含的汉字数比Adobe可能还小些)。
\newCJKfontfamily{\fzsongbig}{[宋体-方正超大字符集.TTF]}
\newCJKfontfamily{\arpluming}{AR PL UMing CN}
\newCJKfontfamily{\simsun}{SimSun}
\DeclareTextFontCommand{\ytzfz}{\fzsongbig}
\DeclareTextFontCommand{\yt}{\arpluming}
\DeclareTextFontCommand{\ytz}{\simsun}
\begin{document}
chinese content here. 各种非常见字及异体字(ytz)用上面命令处理,如:
\yt{𩅞}(雩重):zhong1,氣之往來不息
\ytz{㰦}(去欠):qu4,呿,张口
\ytza{𩩲}(骨曷):he2,肩骨
\end{document}
我還是看不懂你在寫甚麼? 目的是甚麼? 是一個能在 MikTeX 上執行垂直編排的程序? (先前滿庭芳建議歸化日本...) 然後你的程序我看不懂 (有些部分可能是每個人用的方式不同) 我分不清那些是必要的那些不是必要的 哪些是你的創見... 例如 \usepackage{atbegshi} 我就沒用過,也沒聽過。網路上查一下,好像是某個 package 的新版? 但是目的是做甚麼? 我是不是必須用他? 用了有甚麼好處? 這一段好像是要旋轉頁面? 我不是這樣寫的。我是這樣寫的 (雖然也是抄來的) \usepackage{everypage} \AddEverypageHook{\CJKmove\special{pdf: put @thispage <</Rotate 90>>}} 你那段有比較好嗎?
另外你有一段旋轉 baseline 我也不知道是不是必須等等
上次滿庭芳建議規劃日本的方案我始終沒有進行。因為我主要是用 MikTeX 寫論文。TeXLive 系統檔案名稱與 MikTeX 的檔案名稱相衝突,沒辦法兩個都灌。
另外,那個黃帝內經計畫到底是甚麼? 是已經有排出來的黃帝內經? (我真的很想要) 不過找不到。 排黃帝內經的確是一個很有挑戰的計畫。除來直排以外會有很多怪字。
@qnach 抱歉表達的不是很清楚。
我試圖寫一個用xelatex做中文直排的例子給你借鑒(MikTeX裏好像也有xelatex所以你也可以試試)。 聲明一下,例子裏的代碼全部是從網路上copy過來的(我沒有任何創見)。而我確實沒用過MikTeX,所以有些宏包用的也不太一樣。至于哪個寫法好我也不是很清楚,我的要求很低,只要能用就行。
調整baseline那個主要看你用什麽字體,有些字體不用調整,有些需要調整,排版出來你看一下字的位置就知道了。
PS:黃帝內經裏主要是有些非常見字。但是按部首查字典就可以搞定~我用的是漢典(你如果訪問不了可以用全字庫) 這個項目的主要工作量是在校對上,我根據的底稿是大陸這邊1978年出版的黃帝內經,裏面據說加入了後來馬王堆出土的一些片段。目前只校對到前10章,有一個小樣你可以在附件裏下載
PPS #266 也是不錯的參考(如果妳後面考慮用uplatex的話) PPPS 貌似MikTeX可以和TexLive裝在壹個系統裏啊?(我在win10下裝了TexLive和基於MikTeX的CTeX,只需要調整下PATH的問題就好了~ 這個不太確定,妳自己再看看哈……可能CTeX和MikTeX不太壹樣的說~)
另外,直排時,漢字與西文基線不同,如果使用了西文(包括阿拉伯數字,這幾乎是不可避免的),那麼還需要調整基線。XeTeX對直排支援並不好,中文直排LaTeX最好還是使用日本的upLaTeX或者中國基於此的衍生版ApLaTeX。
能不能上報給 XeTeX 的開發者?
另外,直排時,漢字與西文基線不同,如果使用了西文(包括阿拉伯數字,這幾乎是不可避免的),那麼還需要調整基線。XeTeX對直排支援並不好,中文直排LaTeX最好還是使用日本的upLaTeX或者中國基於此的衍生版ApLaTeX。
XeTeX 依賴 HarfBuzz 實作文字排版,所以這個問題還需要向 HarfBuzz 開發者反饋:https://github.com/harfbuzz/harfbuzz/issues