其の環境で利用出來る範囲内で出來る丈正字にする方法
「その環境で利用出來る範囲内で出來る丈正字にする」方法が欲しい
俗字、新體字
環境
IVSが使へない
SVSが使へない
CJK統合漢字
JIS第四水準
JIS第三水準
JIS第二水準
JIS第一水準
特定の字體 (font)
一つの鍵文字に對し、Unicode全域(IVSも五桁以上のcode pointも使へる)→CJK統合漢字(U+4E00〜U+9FFF)→JIS第四→JIS第二と3種の代替字を用意する。
JIS第三, 第四まで對應と云ふフォントは珍しいので。
今の所は飽く迄日本語の文章を變換する事を目標とするので、鍵文字とする對象の文字集合はJIS第四水準を目標とする。
簡體字の正字化は其の後。
何う云ふdata構造で正字を一覧するか?
text で持つのが無理なんや
code:segzi.yaml
- segzi: U4EA4U000E0101
konkyo: 康煕
CJK_unified_ideographs: ~
JIS_4th: ~
JIS_2nd: ~
…
code:schema.yaml
type: array
items:
type: object
properties:
segzi:
description: |
IVSが附けられるものには附ける。SVSは使はない
IVSと5桁以上のUnicodeの字を直接書くのは避け、U~と表記する
type: string
konkyo: {type: string}
zokuzi:
type: array
items: {type: string, pattern: ".|(U\\+0-9A-F+(U\\+E010-9A-F{2})?)"} CJK_unified_ideographs: {type: string, "U\\+(0-9A-F{4})"} JIS_4th: {type: string, pattern: "U\\+0-9A-F+"} JIS_2nd: {type: string, pattern: "U\\+0-9A-F+"} $ 俗字=\{CJK\_unified\_ideographs\}\cup \{JIS\_4th\}\cup \{JIS\_2nd\}\cup zokuzi-\{segzi\}.
$ segzi\notin zokuzi.
異體字を正常に扱へない環境を考慮する訣だから、異體字を記述するのではなくUnicode code pointを直截記入する必要が有る
見辛いのでcommentで補ふ事やviewerを作る事を考へる
IVSを附けて正字を表現出來る字はIVSを附けたものを正字とする
互換漢字の正規化對策
正字或いはその代替字にCJK互換漢字を含ませない
編輯差分を管理する爲適切に行分けされた plain text で保存されなければならない
editorが要りさう
さいつよの Electron 省メンテナンス開發確立するか…
或るcode pointにIVSが附いた形で、正字であるものは高々一つ。それを前提として、正字ではないIVSが附いたものはdataに記載してゐなくても正しいIVSのものに變換したい
IVSが附くものに俗字しか無い事は有り得る
SVSは容赦無く外す。それで困ったら考へませう
複數の正字が一つの俗字に重ねられてゐる場合をどう表現するか
例 : {弁(新字, 帽子), 辨(分ける), 辯(辯護, 大阪辯), 瓣(花瓣, 大動脈瓣), 辮(辮髮)}, {余(わたし), 餘(あまり)}, {予(わたし), 豫(あらかじめ)}, {糸(ベキ), 絲(シ)}, {蚕(テン), 蠶(サン)}
俗字→正字が多價函數と成ると云ふ事に依って上のdata構造で表現出來てゐる
後は變換方法の話であらう
文脈が要る
どの文脈でどの字が正字であるか非形式的に書いておくのがよいであらう
code:kakinahosi.yaml
- zokuzi: 弁
segzis:
- segzi: 弁
jogxafu: ~
- segzi: 辨
jogxafu: ~
…
code:schema.yaml
type: array
items:
type: object
properties:
zokuzi:
type: string
segzis:
type: array
items:
type: object
properties:
segzi: {type: string}
jogxafu: {type: string}
形式的記述をするにはontologyの研究が要るので…
大量にcrowd sourcingに投げて強化學習すると云ふ金の掛かる方法も有りますが
例外に合はせて總てを使い辛くしてはいけない。例外は例外として扱へなければならない
單漢字正字化の前に、同音書換の對象と成った熟語の檢出と置換を行ふ。
字の意味を細分化する樣に部首が追加された字を用ゐた書き方がある熟語(日食→日蝕 發酵→醱酵 etc.)に就ては、基本的に部首が追加された方の字を用ゐた書き方をより正なる物と看做す。
常用漢字への熟語の「同音の漢字による書きかえ」
熟語と、單一の漢字の正字とを同時に考へなければならない場合は無い筈
文脈が要る
Cosense.iconでは IVS は使はない。印刷物にする時には別途 IVS を賦與する
半年や一年で正字への變換機を完成させようとは思ってゐませんよ。そこで使ふ分だけ實用できれば好いと思ってゐます
正字とは何か、と云ふ研究も緩り進めたい
Web fontを作る道具
textlint
Adobe Fontsを使ってるからInDesign内からfontの中身を見られたら便利。出來るかは不明
.jsxって擴張子のECMAScriptです。Reactとは無關係
詰りPython (Transcrypt) で書ける
JIS水準で判別すれば充分なのだから要らんな
正字を直した時の再流し込みが要らないから便利かも
code:Example.jsx
function doWrok(text) {
for (var i = 0, iz = text.paragraphs.length; i < iz; ++i) {
var paragraph = text.paragraphsi; paragraph.contents = "置き換へ\r";
}
}
function main() {
if (app.documents.length === 0) { alert("Error: No document."); return; }
if (app.selection.length === 0) { alert("Error: No selection."); return; }
if (app.selection.length !== 1) { alert("Error: Too many " + app.selection.length + " selection."); return; }
switch (app.selection0.constructor.name) { case "Character":
case "InsertionPoint":
case "Line":
case "Paragraph":
case "Story":
case "Text":
case "TextColumn":
case "TextStyleRange":
case "Word":
break;
case "TextFrame":
doWrok(app.selection0.texts.item(0)); break;
default:
alert("Error: The selected " + app.selection0.constructor.name + " is not a text."); return;
}
}
main();
Prettierがおかしかったのは直した
Segsyoxafu
葦手入力