投稿者 snowmansnow  (社会人) 投稿日時 2021/10/3 13:51:29
こんにちは、るきお様、魔界の仮面弁士様
 今週は、体調不良でお返事が遅くなり申し訳ございません

 魔界の仮面弁士様のwebは、勉強の一部で、質問のintは含まれていませんでした・・・
 何人ものwebをググって、体調不良で。こんがらがってしまいました。
 1面のintしか受け付けないのかと勘違いして、2面以降はどうすればいいのか質問した感じでした。
 intの部分は、コードポイントの事でしたので、2面以降も対応してるのが自分でわかりました。
 何人ものwebをググって、質問さえ、何がなんだかこんがらがっていたと思います。
 皆様、混乱させて申し訳ございませんでした。
 
 異体字は、コードポイントが2つ?(1つとセレクタ?)になるので、
 utf-32の2つ時に、どうすれば良いのか悩んでたのだと思います

 utf-32の2つの時は、1つめだけのようで、2つ目の扱いが不明です。
 教えていただいた
 https://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=%F0%A9%B8%BD
 では、1つ目のみで𩸽を表示できてるようでして、
 netでも、そんな感じなのを確認でき始めていて、質問が変化してきております。
 今のところ、エクセルで実現できる気がしていないので、エクセルにこだわっていは、いません。
 
 サロゲートペア以上のUTF-16が2つ以上の文字(異体字)の(フォントなどの存在)確認方法
 になると、思います。

 utf-32の2つの時に、①2つのコードポイント、②1つのコードポイントと何か?を悩んでいたので
 文字化けでなく、コードポイント?という表記をさせていただいてました。

 フォント”など”の部分は、IVD_Sequences.txtになるのかもしれませんが、
 フォント""では、どうなるのかを知りたかったと、思います。
 
 フォントから指定した文字を取り出すような処理を組む必要があるのではないか
 は、まさしくそれで、今、自分で、取り組んでます。

 CSのWPFのNetFrameworkで、文字をグリフインデックスで表示して、
 コードポイントでグリフインデックスで探し、異体字のグリフがどうなっているか、調査中で、
 コードポイントでは、複数の異体字のグリフを探せない。というトラブルになっています。
 IPAmj明朝で𩸽は、コードポイント171581ですが、取得できるグリフ番号は、55556ですが、
 グリフは、55555、55556、55557の3つです。
 55555、55557を検索、取得できる方法がわかりません。
 さらに、それぞれの異体字セレクタを取得できる方法がわかりません。
 取得できたら、逆さに検索もできる気もしています。

 現状のCSのWPFのNetFrameworkは、下記です
  55556付近を見ると、𩸽が3つあるのが分かると思います。
  いつも短くしたつもりですが、また2つになりました、ごめんなさい。
MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;

namespace WpfApp1_CMAP_CS
{
    ///'https://anderson02.com/cs/wpf/wpf-21/ 
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        int ii = 0;
        public MainWindow()
        {
            InitializeComponent();
     
                GlyphItems = new List<object>();

            System.IO.StreamWriter sw = new System.IO.StreamWriter( @"C:\Users\Y2\Desktop\ipatest.txt", false);
            //TextBox1.Textの内容を1行ずつ書き込む
         
            var font = @"C:\Users\Y2\AppData\Local\Microsoft\Windows\Fonts\ipamjm.ttf";
            //var font = @"C:\Windows\Fonts\meiryo.ttc";

            for (int i = 0; i < new GlyphTypeface(new Uri(font)).GlyphCount; i++)
            //      for (int i = 0; i < 100; i++)
            {
                  GlyphItems.Add(new { FontUri = font, Indices = i.ToString() });
                ii = i;
                sw.WriteLine(new { FontUri = font, Indices = i.ToString() });

            }
            MessageBox.Show(Convert.ToString(ii));
            //https://www.sejuku.net/blog/57946
            DataContext = this;
            //閉じる
            sw.Close();
        }
        public List<object> GlyphItems { get; set; }
        }
    }