Windows Universal应用的字体指标?

时间:2015-12-06 00:56:21

标签: c# xaml windows-10 win-universal-app

我已经尝试了一段时间在Windows 10中找到API,它将为我提供有关在C#中开发通用应用程序时所需的字体指标的所有信息。

我试图解决的真正问题是沿路径绘制文字。我已经有代码来识别给定点沿路径给定距离的坐标。我目前缺乏的是能够识别角色之间的适当距离。

我也想知道字体特征,如前导,尾随,上升,下降等...我相信TextFormatter不再可用或可能,我不知道如何访问它

任何人都可以通过为我需要的课程提供示例或最好是正确的Microsoft文档来帮助我。

谢谢

1 个答案:

答案 0 :(得分:0)

以下作品。这很糟糕,我确信有更好的方法。如果你经常需要CanvasFontFace对象,你最好缓存它们,因为这不是一个快速的getter。拥有CanvasFontFace对象后,您可以使用它来查找上升,下降等。

public static CanvasFontFace FindFontFace() {
  // Very hacky . . . there has to be a better way . . .
  CanvasFontFace r = null;
  CanvasFontSet set = CanvasFontSet.GetSystemFontSet();
  string fontFaceName = "Regular"; // change to your face . . .
  string familyName = "Segoe UI"; // change to your family . . . 
  IReadOnlyList<CanvasFontFace> allFaces = set.Fonts;
  string key = "en-us";
  foreach (CanvasFontFace face in allFaces) {
    IReadOnlyDictionary<string, string> faceNames = face.FaceNames;
    IReadOnlyDictionary<string, string> familyNames = face.FamilyNames;
    if (faceNames.ContainsKey(key)) {
      if (familyNames.ContainsKey(key)) {
        if (faceNames[key] == fontFaceName) {
          if (familyNames[key] == familyName) {
            r = face;
            break;
          }
        }
      }
    }
  }
  // if r is null, you probably have an incorrect face name or family name.
  return r;
}