C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

Win10/Pro + EXCEL365 + "IPAmj明 /S.Kos (20/07/28(Tue) 21:30) #95400
Re[1]: Win10/Pro + EXCEL365 + "IPAmj明 /魔界の仮面弁士 (20/07/29(Wed) 10:07) #95405
│└ Re[2]: Win10/Pro + EXCEL365 + "IPAmj明 /魔界の仮面弁士 (20/07/29(Wed) 10:53) #95406
Re[1]: Win10/Pro + EXCEL365 + "IPAmj明 /ぼーちゃん (20/07/29(Wed) 10:02) #95404
  └ Re[2]: Win10/Pro + EXCEL365 + "IPAmj明 /S.Kos (20/07/29(Wed) 14:57) #95411 解決済み


親記事 / ▼[ 95405 ] ▼[ 95404 ]
■95400 / 親階層)  Win10/Pro + EXCEL365 + "IPAmj明
□投稿者/ S.Kos (6回)-(2020/07/28(Tue) 21:30:43)

分類:[Microsoft Office 全般] 

みなさま、こんにちは。

EXCELネタで申し訳ないのですが、先のハナシの続き、とご容赦ください。

Win10/Pro + EXCEL365 + "IPAmj明朝"フォント" について、おもしろい(?)現象に遭遇しました。

・セルのフォントを"IPAmj明朝"フォント"とし、
・文字情報基盤データベースから、ちょん切れた草冠の花(U+82B1, 82B1_E0103)、を取得して貼り付ける
・そのセルの 書式設定→配置 で横位置を「標準」とすれば、期待通りに表示される
・これを「均等割り付け」とすると、
  該当セルに「普通の花」が表示され
  右隣に「ペケが入った豆腐」が書き出される→左クリックしても数式バーは空欄

どなたか、この現象について、内輪話(笑)をご存じではありませんか?

[ □ Tree ] 返信 編集キー/

▲[ 95400 ] / ▼[ 95406 ]
■95405 / 1階層)  Re[1]: Win10/Pro + EXCEL365 + "IPAmj明
□投稿者/ 魔界の仮面弁士 (2794回)-(2020/07/29(Wed) 10:07:44)
No95400 (S.Kos さん) に返信
> 右隣に「ペケが入った豆腐」が書き出される→左クリックしても数式バーは空欄

結合文字に対して、均等割り付けの実装が追い付いていないように見えますね。
https://hydrocul.github.io/wiki/blog/2015/1025-unicode-grapheme-clusters.html


合成文字や異体字セレクタは分解された上で、代替文字で描画 or 消失。
分解された IVS は文字数 0 としてカウントされ、分解後の描画位置が狂いますし、
サロゲートペアのレンダリングも正しく行われないようです。

なお Excel ではなく Word なら、正しく均等割り付けされるようです。


' Office Professional Plus 2016 の Excel 2016 MSO (16.0.13001.20266) 32 ビット
' バージョン 2006 (ビルド 13001.20384 クイック実行) の VBA で動作確認。
'
Option Explicit

Sub Test()
    With Sheet1.[B2:B7]
        .Font.Name = "IPAmj明朝"
        .Font.Size = 21
        .ColumnWidth = 24#


        '【OK】
        '(中国語の)Ni Hao … [U+4F60],[U+597D]
        '.Value = "「" & ChrW(&H4F60) & "好」"


        '【NG】
        '(つちよし)な吉野家… [U+20BB7],[U+91CE],[U+5BB6]
        'Value = "「" & ChrW(&HD842) & ChrW(&HDFB7) & "野家」"

        '【NG】
        '[MJ021594]の「花」… [U+82B1][U+E0106]
        '[MJ006359]の「丸」… [U+4E38][U+E0102]
        .Value = "「花" & ChrW(&HDB40) & ChrW(&HDD06) & "丸" & ChrW(&HDB40) & ChrW(&HDD02) & "」"

        '【NG】
        '合成カラー絵文字「女性(皮膚色Type-3)と男の子(皮膚色Type-3)」… [U+1F469],[U+1F3FB],[U+200D],[U+1F466],[U+1F3FC]
        '※Word や VSCode はカラー絵文字に対応しているが、Excel では非対応なので単色表示される
        '.Value = "「" & ChrW(&HD83D) & ChrW(&HDC69) & ChrW(&HD83C) & ChrW(&HDFFB) & ChrW(&H200D) & ChrW(&HD83D) & ChrW(&HDC66) & ChrW(&HD83C) & ChrW(&HDFFC) & "」"


        '水平方向の配置
        .Rows(1).HorizontalAlignment = XlHAlign.xlHAlignGeneral     '標準
        .Rows(2).HorizontalAlignment = XlHAlign.xlHAlignDistributed '均等割り付け
        .Rows(3).HorizontalAlignment = XlHAlign.xlHAlignJustify     '両端揃え
        .Rows(4).HorizontalAlignment = XlHAlign.xlHAlignLeft        '左揃え
        .Rows(5).HorizontalAlignment = XlHAlign.xlHAlignCenter      '中央え
        .Rows(6).HorizontalAlignment = XlHAlign.xlHAlignRight       '右揃え
    End With
End Sub

[ 親 95400 / □ Tree ] 返信 編集キー/

▲[ 95405 ] / 返信無し
■95406 / 2階層)  Re[2]: Win10/Pro + EXCEL365 + "IPAmj明
□投稿者/ 魔界の仮面弁士 (2795回)-(2020/07/29(Wed) 10:53:42)
No95405 (魔界の仮面弁士) に追記
> .Rows(2).HorizontalAlignment = XlHAlign.xlHAlignDistributed '均等割り付け
> .Rows(5).HorizontalAlignment = XlHAlign.xlHAlignCenter '中央え

コメントの「中央揃え」が「中央え」になっていた。orz


実行結果のイメージ画像を貼っておきます。
http://www.vb-user.net/junk/replySamples/2020.07.29.10.51/xlHAlignDistributed.png

[ 親 95400 / □ Tree ] 返信 編集キー/

▲[ 95400 ] / ▼[ 95411 ]
■95404 / 1階層)  Re[1]: Win10/Pro + EXCEL365 + "IPAmj明
□投稿者/ ぼーちゃん (24回)-(2020/07/29(Wed) 10:02:42)
なるほど〜面白いですね。

ちょん切れた花(82B1_E0103)はUTF-16で「U+82b1 U+DB40 U+DD03」のサロゲートペアになるから、
これらの間にインデントが割り込むかなんかして分解されてしまうんですかね。
最初のベースキャラクタ部分が普通の花として描写されて、後半は豆腐になってしまうと。
[ 親 95400 / □ Tree ] 返信 編集キー/

▲[ 95404 ] / 返信無し
■95411 / 2階層)  Re[2]: Win10/Pro + EXCEL365 + "IPAmj明
□投稿者/ S.Kos (7回)-(2020/07/29(Wed) 14:57:29)
おもしろがっていただけたとは、嬉しい限りです(笑)
魔界の仮面弁士さん、テストコードの提供、おもしろかったです。

ここで閉じます。

新たな質問を投稿します。
こちらへのご教示も、よろしくお願いします


解決済み
[ 親 95400 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -