Open edward-martyr opened 4 years ago
破折號因爲使用頻繁,希望可以優先解決。實現代碼:
% !TEX program = lualatex
\documentclass[11pt]{ltjtarticle}
\usepackage{luatexja}
\usepackage{luatexja-fontspec}
\begin{document}
\jfontspec{I.Ming}
——
\end{document}
大槪可以視作 #11 的豎排版本?
另附產生〳〵問題的代碼(其中\zw
表示空了多少個字位),Noto 系列對比:
% !TEX program = lualatex
\documentclass[11pt]{ltjtarticle}
\usepackage{luatexja}
\usepackage{luatexja-fontspec}
\begin{document}
\ltjsetparameter{kanjiskip=0.4\zw}
\jfontspec{I.Ming}
取り〴〵
\jfontspec{NotoSerifCJKkr-Regular}
取り〴〵
\end{document}
豎排的 U+2E3A 還沒有做吧。橫排可以連在一起是有計劃把兩個連續出現的 U+2014 變成 U+2E3A。
@RuixiZhang42 製作字體時使用 OpenType 的 Vertical Alternates 特性卽可。卽,做一個 U+2E3A
在縱書時的替換字形。
包括小書假名(ァ、ㇽ、ャ 之類)、長音記號(ー)等衆多日本字符已經在運用這個技術。
如果使用Glyphs製作的話,只需做一個名爲 uni2E3A.vert
(卽調用 U+2E3A
的 Vertical Alternates 特性) 的字符。
抱歉還是看得不太明白……^^;;;;; 我們也沒有$_$購買Glyphs啊……嗚……
@SyaoranHinata
我來簡單解釋一下吧。排版的時候,橫排直排出現的破折號,如果輸入形式是 <U+2014 U+2014>
,那麼應該禁止這兩個字符分離。同樣道理,直排出現的「日文重複符號」,如果輸入形式是 <U+3033 U+3035>
或是 <U+3034 U+3035>
,也應該禁止字符之間分離。
具體到數位排版的實現,就可以從兩個方向入手。一個是字型軟體,另一個是排版軟體。
字型軟體方面:
U+2014
做成「撐滿字框」或者甚至「兩端超出字框」的形態。同樣地,字廠會把 U+3033
、U+3034
的下面做「超出字框底部」,把 U+3035
的上面做「超出字框頂部」。這樣一來,在「密排」的狀態下,就可以「看起來沒有分離」。上面第二種方法當然能夠處理更多的情況,這就是 @edward-martyr 提到的「增大正常字距」的「疏排」。如果增大了字距,字型軟體的第一種方法就不能保證字符能夠連在一起,字距拉得太大,一定會把兩個字符拉開。而第二種方法,因為已經事先替換成單個字形了,所以無論如何改變字距,都不會拉開這些禁止分離的符號。
目前「一點明體」對「橫排破折號」就是採用第二種方案,而「直排破折號」與「直排日文重複符號」則是保持「IPA 字型」的第一種方案。「思源」家族字型都是用第二種方案。
@edward-martyr @SyaoranHinata 如果「一點明體」學「思源」,那麼字型檔案裡面就會出現「兩個字高」的字形,那麼也就不可避免會出現「行高異常」的問題。參見
所以我的觀點是「一點明體還是不要學思源了吧」,233……
話說回來,@edward-martyr 給的例子,應該不難從「排版軟體」的方向解決問題吧。在我看來,應該是 luatexja-ja
沒有正常生成、載入 ltj-kinsoku_make.tex
(標點禁則)的結果。正常情況下,應該是默認保證了 <U+2014 U+2014>
、<U+3033 U+3035>
、<U+3034 U+3035>
中間不分離才對啊。
@edward-martyr
用 luatexja
的話,疏排不是可以用 \inhibitglue
嗎?
% !TEX program = lualatex
\documentclass[11pt]{ltjtarticle}
\usepackage{luatexja}
\usepackage{luatexja-fontspec}
\begin{document}
\ltjsetparameter{kanjiskip=0.4\zw}
\jfontspec{I.Ming}
取り〴\inhibitglue 〵
\end{document}
是不是可以去 https://osdn.net/projects/luatex-ja/ticket/ 開個 issue……
@RuixiZhang42 謝謝你對這個問題的關注。你的代碼在我使用 Noto Sans CJK 的時候是沒問題的,符號沒有斷開,不過一點明朝(以及IPA明朝)還是不行。相似的 behavior 在其他軟件如 Pages 上也有,所以應該是一點明朝基於的IPA明朝的設計問題。 不知 @SyaoranHinata 使用什麼程式製作字體?我用 Glyphs 基於 6.11 版本試作了一份字體,將豎排的文字高度和橫排的文字高度設置分開,應該不會有前述字符過高的問題。目前我在 Pages 和 LuaTeXja 中都測試無誤。
我們團隊都是窮人,有人只能用FontForge,有人辛苦地買過Font Creator舊版或Fontlab Studio 5至今一直使用,但沒有人能有Glyphs吧。
我們不久前剛討論了,參考了Ruixi兄的解說,決定是不處理的。首先我們之所以這字型,主力是推廣弘揚傳承字形。符號甚麼的可以有不同解決方法,但弘揚傳承字形,明明傳承字形每天在生活中存在,偏偏許多人都不去珍惜,有些字型製作者只片面地擷取,有些只知吃力不討好地盲從臺標,弘揚傳承字形的工作就沒多少人肯做。我們做傳承字形的事都已吃不消,卻找不到多少人一同幫忙,然後接連來收到的要求都跟傳承字形無關的,實在非常分薄我們的人力。其次,編程甚麼的我們完全不懂,連在軟件中設定豎排文字標點或者兩個碼位合文的OpenType轉換甚麼,我和一些團隊成員嘗試了很久都是失敗,幸而還有一兩個成員成功。現在這個版本的標點處理,至少已超出我和好些成員的應付能力,再要修改甚麼就更混亂了。
當然我們很歡迎大家幫助甚至協作,我們求之不得。目前我們打算推出「擴展區G」對應版本,推出後歡迎大家給我們幫助甚至跟我們合作,生成一些改良了某些地方同時不會引起別的問題(例如不會使平時的行距崩壞,或者不會使字型檔再用FontForge、Font Creator編輯後出別的岔子)的字型檔。若大家不吝賜予援手,屆時有勞各位共襄盛擧了。
By the way,不知有沒有在Word、Photoshop、Illustrator、InDesign、Powerpoint、Publisher、Excel裏測試啊?畢竟它們的使用者太多,要是在它們裏崩了,肯定會投訴一大堆吶^^;;;;;;
謝謝你詳盡的回覆!說來我更是窮人了🤣一介高中生而已。我也是因爲偶有需要纔下載了試用版的 Glyphs;既然下載了,不如試着解決一下自己之前在使用其他字體時發現的問題。不過我想類似的連字功能,開源軟件 fontforge 等也應有提供。
我非常認可和欽佩一點明朝的理念和在字形方面取得的成果;一點明朝也是我瞭解字形區別以來用得最放心的採用傳統字形的字體。不過私以爲中文字體在滿足不同使用者對字形的要求之上,對標點的使用習慣同樣不能忽略(所以一點明朝的標點置中版本也很重要),畢竟現代中文行文主要就是漢字與標點,闕一不可。連續輸入兩個破折號而得到斷開的字形是西文字體的表現;而中文自採用標點以來都使用着連體、佔兩個字位的破折號。
所以如果 @SyaoranHinata 兄有意向的話,我樂意試着爲現在的四個字體文件加上豎排的破折號。考慮長遠的可維護性,會嘗試全程使用開源軟件。字體測試方面,我不用Adobe系列,但可以測試一下微軟的套件,雖然我主要使用LaTeX輸出。不過我想 Adobe 的高級排印軟件甚至可能在當前版本 6.11 就能夠輸出正確的豎排破折號,因爲它會自動地把 two-em dash 轉九十度,而不需要依賴vert
特性。
明白,也謝謝閣下包容在下這番有點失態的話,現在回看還覺得有點兒抱歉m( )m。標點方面,一來我們已經長期被技術困擾(直至Ver 5.0才解決了豎排標點位置和旋轉90度角等問題,然後因爲異體和兩種標點,已經變成四個檔案,更新時常會不愼有錯。但惡夢還未完,大家又不斷問我們依不同的想法去改標點,比如問我們依後出的Type is beauty上的方案,但怎麼不幫幫忙問Type is beauty宣揚一下傳承字形方案啊……抱歉都是個人心裏不適當的吐嘈),編程甚麼的我們又看不明白,要進一步嘗試的話眞的需要各位慷慨協助了。那麼我先增補一點兒漢字吧,補字後的步驟就有勞了,感謝!
沒問題,那就先靜候佳音,等待一點明朝增補漢字。
說一些個人感想,首先,一件事情並不是一兩個人的努力,我們在字形上努力過,既然是以開源方式回饋出來,大家自然可以協力,在標點排版等方面建立fork版本,幫助開枝散葉,發揚光大。
另外,也希望各位可以協助,向其他字型的組織或團體宣揚傳承字形,促成有更多符合傳承字形的字型誕生,或者讓一些提倡字體排印新標準或習慣的團體協助宣揚傳承字形的重要性。
要是能夠這樣,就不會讓我們感到遠遠近近都沒多少人明白傳承字形了。
感謝各位的關注,目前已更新了6.12版,歡迎大家製作衍生版本並進行測試,成品良好的話,我們也可以考慮融合進下一個版本。除了 @edward-martyr 上述的問題外,過往 @RuixiZhang42 也熱心爲我們提供標點的意見和測試標點改作。限於我們團隊內的人手和技術,恐怕餘下的改進無法由我們親自完成。若各位能以開源精神改作,經測試證實效果良好,而且我們團隊使用手上的舊版字型製作軟件也能支援的話,也可以考慮融合進下一個版本。謝謝各位。
@edward-martyr @RuixiZhang42 目前已经合并了 https://github.com/edward-martyr/I.Ming/commit/66b826fde16b4247f0543aff585a4a2d8ad20a12 到 beta 测试版 7.090,请测试看看是否已经解决了你们的问题,也麻烦测试看看与现在正式版 7.01 有没有排版上的行距差异,避免类似思源的撑行距问题出现。
I.Ming-vert2em
的表现和我的 Fork 还是不一样,竖破折号只有一个字高
@edward-martyr 请问能帮忙确认看看是什么问题吗?使用ttx
检查,该字符的vmtx高度是4096(为2048×2),软件内设置也正确。
<mtx name="uni2E3A.vert" height="4096" tsb="202"/>
下图为 Adobe InDesign CC2018 测试图,并未见一个字高问题。
P/S: 请确认使用的字体版本是否正确,可能覆盖了但并未更新。
@NightFurySL2001 那可能是 luaotfload
调用字体信息的方式有点问题吧。我的代码:
% !TEX program = lualatex
\documentclass[
tate
]{jlreq}
\ltjdefcharrange{10}{"2E3A}
\ltjsetparameter{jacharrange={-1, +2, +3, -4, -5, +6, +7, -8, +9, +10}}
\usepackage{luatexja-fontspec}
\begin{document}
\jfontspec[TateFeatures={JFM=propv}, YokoFeatures={JFM=prop}]{I.Ming} % my fork
破折號哪能⸺可以𠲎
\jfontspec[TateFeatures={JFM=propv}, YokoFeatures={JFM=prop}]{I.Ming-vert2em.ttf}
破折號哪能⸺可以𠲎
\end{document}
效果:
当然,这也可以通过在 JFM 里强制指定⸺
为两个字宽来解决,但这就不是调用字体的metrics了。
我已让朋友协助测试LaTeX排版系统,发现如下: 于lualatex测试时发现除了U+2E3A竖排只占一个字符高度,还有U+3031, U+3032移上半个em的情况。U+3031, U+3032的情况是为了方便横排对齐高度,还有尽可能避免思源的撑行高问题出现,因此选择移上半个em以对齐横排汉字。我的猜测为lualatex已经将几个字符的参数写死,如果字体不符合lualatex参数则无法正常排版。另外,U+2014 U+2014的连字并未在lualatex内替换,呈现断裂状态。
朋友也在uptex内测试,效果正常,如下:
不知您可以在其他TeX系统测试看看有这个问题吗?以下附上朋友提供的文件,main.pdf是lualtex,main2.pdf是uptex。
@NightFurySL2001 问题应该不只出现在 LuaTeX(底层引擎),XeTeX 也有相似的问题:https://sourceforge.net/p/xetex/bugs/162/ (2020年1月报告的……)在 XeTeX 中,直排连用两个 U+2014
可以连字(因为思源的 ccmp
默认开启)、连字能够正确地占据两个字身、但是位置向上偏移半个字身。另外,在 XeTeX 中,直排若直接输入一个 U+2E3A
,则只占据一个字身。
由此推断,两种引擎(LuaTeX、XeTeX)对直排的支持非常粗糙,对于每个需要被「旋转 90 度」的 CJK 字符仅仅做了简单的旋转处理(加上标点符号的字形替换)。但是对于每个输入的码位,一律视其 horizontal advance 为 1em,完全无视 vertical metrics 或 vertical positions 等字体信息。
P.S. LuaTeX、XeTeX 不用字体提供的行高参数进行排版。
@RuixiZhang42 所以已经确认是 LuaTex, XeTeX 支援不足,并非本字体的问题对吗?若无问题,我们将会合并该字型,关于TeX系统无法排版的问题我则会尽量转接其他仓库提Issue。
P/S: @edward-martyr @RuixiZhang42 朋友推荐可以试看 UpTeX,设置步骤在同一个7z文件的readme内。
@NightFurySL2001 「一点明体」本身应该是没有问题的。
LuaTeX、XeTeX、upTeX 三大引擎原生支持 Unicode,但它们对于 OpenType 的支持都不完善。
luaotfload
(主要面向 non-CJK),OpenType+CJK 的本地化、优化则来自 luatexja
。xeCJK
、xetexko
,新宏包有本人尚在开发的 newxeCJK
。@RuixiZhang42 好的,没问题。下一版将会合并上述更新。
P/S: 如果要学习TeX应如何下手?望邮件回复。
关于入手 TeX,只能给些个人经验吧。
我因为学习需要,所以最早是从 LaTeX 入手的。一开始是安装的 LyX,记得它可视化界面、用户互动做得还不错,算是半个 WYSIWYG 吧。不过后来需求变多,就换成 MiKTeX(适合 Windows)了。Mac/Linux 的话推荐装 TeXLive。
LaTeX 的入门书推荐 https://ctan.org/pkg/lshort (有各种语言翻译)。
上手之后就会想学 TeX 底层的语法、宏编程。那么一定要读 Knuth 的原著:《The TeXbook》(Knuth 公开了全书的源代码,但不允许编译成 PDF 或以任何形式变成已排版好的文档,2021 年年初刚更新了一次,值得买)。搭配读物有 https://ctan.org/pkg/texbytopic (像工具书)
对「宏编程」与 TeX 底层有所了解之后,就可以大胆前进到 LaTeX3 编程了。「宏语言」其实不适合编程,但 LaTeX3 对「宏语言」进行了大幅度封装,用「LaTeX3 语言」编程更像用 C++、Python 等语言编程了。
On Tue, Mar 9, 2021 at 7:37 AM NFSL2001 @.***> wrote:
@RuixiZhang42 https://github.com/RuixiZhang42 好的,没问题。下一版将会合并上述更新。
P/S: 如果要学习TeX应如何下手?望邮件回复。
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ichitenfont/I.Ming/issues/18#issuecomment-793824055, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJQ6AWPRUDRXAEPLMLY5SGLTCYJAJANCNFSM4KEGWHHQ .
用 LaTeX 豎排之破折號中間有明顯斷裂,與橫排 behaviour 不同;同樣配置試用了一些日本字體是沒問題的。
另外,豎排的「くの字点」(〳〵;〴〵)似乎沒有連字成(〱;〲)。默認字距時「〳〵」看起來就像「〱」,但如果豎排有時要增加字距,就會出現斷裂。