UWP 네 이 티 브 컨트롤 은 FontFamily 를 통 해 네트워크 사용자 정의 글꼴 을 불 러 옵 니 다.

오늘 갑자기 만들어 진 제3자 UWP 의 일부 페이지 를 불 러 올 수 없습니다. 검 사 를 해 보 니 인터넷 에서 얻 은 html 형식 이 바 뀌 었 습 니 다. 정규 표현 식 만 조정 하려 고 했 는데 자세히 보 니 안에 있 는 글 자 를 모두 유 니 코드 인 코딩 형식 으로 바 꾼 다음 에 사용자 정의 글꼴 로 표시 하면...다른 글꼴 로 표시 하면 난 장 판이 다.
이런 경 우 는 이전에 도 있 었 지만 10 개의 숫자 로 이렇게 만 들 었 다. 그 때 는 처음에 인 코딩 대응 표를 만 들 려 고 했 는데 글씨체 와 인 코딩 이 모두 무 작위 로 생 성 된 것 을 발견 하고 포기 했다. 나중에 WebView 로 html 와 글꼴 스타일 을 써 서 불 러 왔 다.
그러나 WebView 방식 으로 이런 큰 단락 의 문자 에 사용 하 는 것 은 그다지 좋 지 않 고 성능 이 좋 지 않 으 며 체험 도 좋 지 않다. 나 는 네 이 티 브 컨트롤 자체 로 네트워크 글꼴 을 불 러 올 수 있 을 까 생각 했다.여러 곳 의 검색 을 통 해 한 사람 이 쓴 블 로그 글 에서 서광 을 보 았 다.링크:https://blog.mzikmund.com/2017/01/using-custom-fonts-in-cs-uwp-apps/
블 로그 글 의 작성 방법 에 따라 html 에 있 는 글꼴 파일 을 다운로드 하여 UWP 의 Assets 폴 더 에 넣 은 다음 에 TextBlock 의 Text 에 해당 하 는 html 를 기록 하면 해석 할 수 있 습 니 다.그러나 글꼴 파일 과 html 인 코딩 은 서버 쪽 에서 무 작위 로 생 성 되 기 때문에 UWP 프로그램 이 실 행 될 때 Assets 등 자원 디 렉 터 리 를 수정 할 수 있 는 권한 이 없 기 때문에 Assets 폴 더 에 있 는 글꼴 을 불 러 올 수 있다 고 해서 완전히 성공 한 것 은 아 닙 니 다.계속 시도 해 보 세 요. 파일 의 절대 경로, http 링크 를 시 도 했 지만 안 됩 니 다.인터넷 검색 을 계속 하면 서 포기 하려 고 웹 뷰 노선 을 바 꿨 지만 결국 MSDN 에서 방법 을 발견 했다.링크:https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.Media.FontFamily?view=winrt-19041
MSDN 에 URI 를 사용 할 수 있다 고 쓰 여 있 습 니 다. 저 는 ms - appx 프로 토 콜 을 해 보 았 습 니 다. Assets 폴 더 에 있 는 글꼴 을 정상적으로 불 러 올 수 있다 는 것 을 알 고 ms - appdata 프로 토 콜 을 다시 시도 해 보 았 습 니 다. UWP 의 local, temp, roaming 에 있 는 글꼴 파일 을 불 러 올 수 있다 는 것 을 알 게 되 었 습 니 다. 이로써 제 요 구 를 만족 시 켰 습 니 다.
구체 적 인 용법 및 주의사항 은 다음 과 같다.
C \ # XAML 과 일치 하 는 쓰기:
TextBlock1.FontFamily = "ms-appdata:///temp/24866d64-cfad-4bd2-838f-ea863f60d3dd.ttf#FontName";

이 안 에는 몇 가지 주의사항 이 있다.
1. 글꼴 파일 의 형식 은 ttf 와 otf 만 지원 하고 woff 2 와 eot 등 은 지원 되 지 않 습 니 다.
2. fontName, 위 에 있 는 블 로그 에 언급 된 dp4 Font Viewer 소프트웨어 로 확인 해 야 합 니 다. css 에 적 힌 family - name 이 아 닌 Full font name 속성 에 대응 해 야 합 니 다. 그러나 가끔 은 Full font name 의 마지막 Regular 를 삭제 해 야 할 수도 있 습 니 다.
3. 이 temp 디 렉 터 리 는 Windows. storage. applicationData. Current. Temporary Folder. Path 가 아 닌 Windows. Storage. ApplicationData. Current. Temporary Folder. Path 에 대응 합 니 다. 제 가 이 문 제 를 잘못 알 았 기 때문에 이 문 제 를 해결 하려 는 시 도 를 포기 할 뻔 했 습 니 다.
4. C \ # 코드 에서 Text 에 값 을 부여 할 때, 먼저 ⭧ 형식의 인 코딩 을 Html 디 코딩 한 다음 에 값 을 부여 해 야 합 니 다. 그렇지 않 으 면 이러한 인 코딩 이 바로 표 시 됩 니 다.
5. URI 에 공백, \ # 등 특수 문자 가 있 으 면 URL 인 코딩 을 먼저 사용 합 니 다.
또한 글꼴 파일 에 점용 되 는 문제 가 존재 하기 때문에 매번 무 작위 파일 이름 으로 저장 하 는 것 이 좋 습 니 다. 그렇지 않 으 면 이상 이 발생 하여 응용 이 반 짝 거 릴 수 있 습 니 다.
그 블 로그 의 마지막 부분 에 UWP 가 DirectWrite fonts 를 지원 해 야 한다 고 썼 지만 나 는 그 Sample 의 코드 를 보 았 지만 해결 방안 을 찾 지 못 했다. http 의 링크 를 직접 써 도 안 되 고 정말 괜 찮 은 지 모르겠다.

좋은 웹페이지 즐겨찾기