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