C# openxml sdk 2.0-未在元音突变上设置字体

C# openxml sdk 2.0-未在元音突变上设置字体,c#,ms-word,ms-office,openxml,openxml-sdk,C#,Ms Word,Ms Office,Openxml,Openxml Sdk,我正在使用OpenXMLSDK2.0生成一些word文件。我现在的问题是,对于德语元音突变(äöÄäÜ),字体不适用 下面是一个例子: 尝试使用其他一些字体,但即使使用这些字体也不起作用,字体总是设置为“Calibri” 有人知道一些提示,让风格附加到这些特殊的德国字符 谢谢你的建议 这是我创建角色样式的方法: public static void CreateAndAddCharacterStyle(StyleDefinitionsPart styleDefinitionsPart,

我正在使用OpenXMLSDK2.0生成一些word文件。我现在的问题是,对于德语元音突变(äöÄäÜ),字体不适用

下面是一个例子:

尝试使用其他一些字体,但即使使用这些字体也不起作用,字体总是设置为“Calibri”

有人知道一些提示,让风格附加到这些特殊的德国字符

谢谢你的建议

这是我创建角色样式的方法:

public static void CreateAndAddCharacterStyle(StyleDefinitionsPart styleDefinitionsPart,
    string styleid, string stylename, string aliases = "")
{
    Styles styles = styleDefinitionsPart.Styles;

    DocumentFormat.OpenXml.Wordprocessing.Style style = new DocumentFormat.OpenXml.Wordprocessing.Style()
    {
        Type = StyleValues.Character,
        StyleId = styleid,
        CustomStyle = true
    };

    Aliases aliases1 = new Aliases() { Val = aliases };
    StyleName styleName1 = new StyleName() { Val = stylename };
    LinkedStyle linkedStyle1 = new LinkedStyle() { Val = styleid + "Para" };
    if (aliases != "")
        style.Append(aliases1);
    style.Append(styleName1);
    style.Append(linkedStyle1);

    StyleRunProperties styleRunProperties1 = new StyleRunProperties();

    if (styleid == "textfett")
    {
        RunFonts font1 = new RunFonts() { Ascii = "Gotham Narrow Medium" };
        styleRunProperties1.Append(font1);
    }
    else
    {
        RunFonts font1 = new RunFonts() { Ascii = "Gotham Narrow Light" };
        styleRunProperties1.Append(font1);
    }

    style.Append(styleRunProperties1);

    styles.Append(style);
}
以及我的文字书写代码:

List<Run> runs = new List<Run>();

Run r = new Run(new Text(node.Attributes["titel"].InnerText) { Space = SpaceProcessingModeValues.Preserve });
r.RunProperties = new RunProperties();
r.RunProperties.RunStyle = new RunStyle();
r.RunProperties.RunStyle.Val = "textfett";
runs.Add(r);

r = new Run(new Break());
runs.Add(r);

foreach (System.Xml.XmlNode node2 in node.ChildNodes)
{
    if (node2.Name == "info")
    {
        r = new Run(new Text(node2.Attributes["name"].InnerText + ":") { Space = SpaceProcessingModeValues.Preserve });
        r.RunProperties = new RunProperties();
        r.RunProperties.RunStyle = new RunStyle();
        r.RunProperties.RunStyle.Val = "textfett";
        runs.Add(r);

        r = new Run(new Text(" " + node2.InnerText + " ") { Space = SpaceProcessingModeValues.Preserve });
        r.RunProperties = new RunProperties();
        r.RunProperties.RunStyle = new RunStyle();
        r.RunProperties.RunStyle.Val = "textnormal";
        runs.Add(r);
    }
    if (node2.Name == "ende")
    {
        //r = new Run(new Break());
        //runs.Add(r);

        r = new Run(new Text(node2.InnerText) { Space = SpaceProcessingModeValues.Preserve });
        r.RunProperties = new RunProperties();
        r.RunProperties.RunStyle = new RunStyle();
        r.RunProperties.RunStyle.Val = "textnormal";
        runs.Add(r);
    }
}

Paragraph p = new Paragraph();
foreach (Run run in runs)
{
    p.AppendChild<Run>(run);
}
doc.MainDocumentPart.Document.Body.AppendChild(p);
List runs=newlist();
Run r=new Run(新文本(node.Attributes[“titel”].InnerText){Space=SpaceProcessingModeValues.Preserve});
r、 RunProperties=新的RunProperties();
r、 RunProperties.RunStyle=新的RunStyle();
r、 RunProperties.RunStyle.Val=“textfett”;
运行。添加(r);
r=新运行(新中断());
运行。添加(r);
foreach(node.ChildNodes中的System.Xml.XmlNode node2)
{
如果(node2.Name==“info”)
{
r=新运行(新文本(node2.Attributes[“name”].InnerText+“:”){Space=SpaceProcessingModeValues.Preserve});
r、 RunProperties=新的RunProperties();
r、 RunProperties.RunStyle=新的RunStyle();
r、 RunProperties.RunStyle.Val=“textfett”;
运行。添加(r);
r=新运行(新文本(“+node2.InnerText+”){Space=SpaceProcessingModeValues.Preserve});
r、 RunProperties=新的RunProperties();
r、 RunProperties.RunStyle=新的RunStyle();
r、 RunProperties.RunStyle.Val=“textnormal”;
运行。添加(r);
}
如果(node2.Name==“ende”)
{
//r=新运行(新中断());
//运行。添加(r);
r=新运行(新文本(node2.InnerText){Space=SpaceProcessingModeValues.Preserve});
r、 RunProperties=新的RunProperties();
r、 RunProperties.RunStyle=新的RunStyle();
r、 RunProperties.RunStyle.Val=“textnormal”;
运行。添加(r);
}
}
第p段=新的第()段;
foreach(磨合运行)
{
p、 儿童(跑步);
}
doc.MainDocumentPart.Document.Body.AppendChild(p);

我对法语口音的字符也有同样的问题

您需要为要应用于重音字符的字体设置这些属性。例如:

RunFonts font = new RunFonts();
font.Ascii = font.HighAnsi = font.ComplexScript = @"Calibri";
因此,请按以下方式修改您的代码:

    RunFonts font1 = new RunFonts() { 
        Ascii = "Gotham Narrow Medium", 
        HighAnsi = "Gotham Narrow Medium", 
        ComplexScript = "Gotham Narrow Medium" };