private bool IsPunctuation(UChar letter) { return (CC.Cl01(letter) || CC.Cl02(letter) || CC.Cl03(letter) || CC.Cl04(letter) || CC.Cl05(letter) || CC.Cl06(letter) || CC.Cl07(letter)); }
private bool IsPunctuation(string letter) { return(letter.Length == 1 && (CC.Cl01(letter[0]) || CC.Cl02(letter[0]) || CC.Cl03(letter[0]) || CC.Cl04(letter[0]) || CC.Cl05(letter[0]) || CC.Cl06(letter[0]) || CC.Cl07(letter[0]))); }
private void SetAppropriateTextMatrix(UChar letter, float voffset, PdfContentByte cb) { var ytlm = MyYTLM; if (_isPsuedoVertical) { if (CC.Cl06(letter) || CC.Cl07(letter)) { //句読点を平行移動。 cb.SetTextMatrix(_xtlm + _fontSize * (1F / 2 + 1F / 8), ytlm + _fontSize * (1F / 2 + 1F / 8) + voffset); } else if (CC.Cl11(letter)) { //小書きの仮名を平行移動。 cb.SetTextMatrix(_xtlm + _fontSize / 8, ytlm + _fontSize / 8 + voffset); } else if (CC.Cl01(letter)) { //始め括弧を回転、平行移動 cb.SetTextMatrix(0F, -1F, 1F, 0F, _xtlm + _fontSize / 2, ytlm); } else if (letter.CodePoint == char.ConvertToUtf32("ー", 0)) { //音引きを回転、かつ左右反転 cb.SetTextMatrix(0F, -1F, -1F, 0F, _xtlm - _fontSize / 2, ytlm - _fontSize / 2); } else if (letter.CodePoint == char.ConvertToUtf32("—", 0)) //part of Cl08) { //エムダッシュを回転 cb.SetTextMatrix(0F, -1F, 1F, 0F, _xtlm + _fontSize * (1F / 2F + 1 / 8F), ytlm - _fontSize / 2); } //TODO: 毎回 UString 作らない UChar[] で持つ。 else if ( CC.Cl02(letter) || (new UString("―…‥").Contains(letter)) || //part of Cl08 CC.Cl10(letter) || (new UString("~+±=-÷≠:;‘’“”<>≦≧_|→↓←↑⇒⇔").Contains(letter))) //その他転置すべき記号。よく使いそうなものだけ { //それ以外の記号を回転 cb.SetTextMatrix(0F, -1F, 1F, 0F, _xtlm + _fontSize / 2, ytlm - _fontSize / 2); } else { cb.SetTextMatrix(_xtlm, ytlm + voffset); } } else { cb.SetTextMatrix(_xtlm, ytlm + voffset); } }
public GlueProperty LineTailGlueJP(UChar letter, float zwSize) { if (CC.Cl07(letter) || CC.Cl06(letter) || CC.Cl02(letter)) { var toCancel = LengthJPByZw(letter, zwSize); return(new GlueProperty(-toCancel, toCancel + 0.5F * zwSize, 0F)); //TODO: 行末は指定のアキかベタ組かどちらか。またほかのアキより優先的に詰める。データ型と UnjustfiedLine のデータ構造変更。 //TODO: 前項目の修正はぶら下げも実現できるように } else if (CC.Cl05(letter)) { var length = 0.25F * zwSize; return(new GlueProperty(length, 0, length)); } else { return(new GlueProperty()); } }
public static SpaceType GetSpaceType(this UChar letter) { if (CC.Cl07(letter) || CC.Cl06(letter) || CC.Cl02(letter)) { return(SpaceType.Closing); } else if (CC.Cl01(letter)) { return(SpaceType.Opening); } else if (CC.Cl04(letter)) { return(SpaceType.DividingPunctuation); } else if (CC.Cl05(letter)) { return(SpaceType.MiddleDots); } else { return(SpaceType.Normal); } }
/// <summary> /// 行頭禁則 /// </summary> private static bool DoViolateLineStartProhibitionRule(UChar following) { return(CC.Cl02(following) || CC.Cl04(following) || CC.Cl06(following) || CC.Cl07(following) || CC.Cl09(following)); }