2009-09-17 2 views
20

응용 프로그램에 사용할 필요가있는 일본어 문자를 지원하는 타사 글꼴이 있습니다. 문자가이 글꼴로 지원되지 않을 때마다 자주 보인 사각형 ("기본 문자")이 그려집니다. 분명히 모든 일본어 문자가 지원되는 것은 아닙니다. 왜냐하면 번역사가 우리에게 준 번역을 그리려면 많은 직사각형이 있기 때문입니다.C#에서 글꼴의 지원 문자 가져 오기

지원되지 않는 문자가 사용될 때마다 알림을 받아야하므로 Word와 같이이 단일 문자의 글꼴을 변경하거나 다른 반응을 구현할 수 있습니다.

아이디어가 있으십니까? TTF 파일에서 유니 코드 문자 목록을 추출 할 수 있다면 사용 된 문자가이 목록에 포함되는지 여부를 확인할 수 있습니다. 그러나 어떻게 그렇게 할 수 있습니까?

+0

나는 정확히 같은 문제에 직면 해있다. 나는 다른 제 3 자 글꼴에서 이러한 사각형 형식 문자를 제외해야합니다. 누군가가 어떤 해결책을주십시오 .... – Mohsan

답변

-2

문자표에서 끌어 올 수없고 정의되지 않은 문자 범위를 기록 할 수 없습니까?

이 정보에 대한 TTF 파일을 구문 분석하는 프로그램 방식이있을 수 있습니다. 단 하나의 특정 글꼴 일 경우 문자표를 열고 유니 코드로 그룹을 "일본어 히라가나/카타카나"로 설정하는 것이 더 쉽습니다. 정의 된 범위를 기록하십시오.

22

this answer에 기초 함.

것은 PresentationCore.dll

이 코드를 사용해보십시오 참조하십시오 :

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows.Media; 

namespace fontChecker 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var families = Fonts.GetFontFamilies(@"C:\WINDOWS\Fonts\Arial.TTF"); 
      foreach (FontFamily family in families) 
      { 
       var typefaces = family.GetTypefaces(); 
       foreach (Typeface typeface in typefaces) 
       { 
        GlyphTypeface glyph; 
        typeface.TryGetGlyphTypeface(out glyph); 
        IDictionary<int, ushort> characterMap = glyph.CharacterToGlyphMap; 

        foreach (KeyValuePair<int, ushort> kvp in characterMap) 
        { 
         Console.WriteLine(String.Format("{0}:{1}", kvp.Key, kvp.Value)); 
        } 

       } 
      } 
     } 
    } 
} 

출력 이미지는 고라와 함께 오래 삭제 된 이미지를 교체 인해 ImageShack에 제거.

+0

UWP와 함께 할 수있는 방법이 있습니까? UWP 앱에서 관련 작업을 수행해야합니다. – erickfiveten

관련 문제