簡體   English   中英

SharpDX字符間距

[英]SharpDX Character Spacing

我正在開發一個應用程序,該應用程序必須重新創建PowerPoint如何適合文本(縮小以適合),以便確定允許一組文本適合PowerPoint中給定文本框所需的必要字體比例。

我正在使用Aspose庫生成幻燈片,但是Aspose計算出的字體比例通常是不正確的,因此,在首次打開演示文稿時,某些文本可能顯示得比預期的大,導致長文本從文本框流出並超出到其他相鄰的文本框中。

最初,我嘗試使用GDI MeasureString()和手動換行算法,但這是非常不准確的。 我發現PowerPoint使用DirectWrite將文本呈現到屏幕上,因此我嘗試使用ShaprDX和TextLayout獲得了更好的結果。

我的算法涉及反復嘗試在給定的文本框中布局文本,並減小字體大小,直到適合為止。

但是我最近發現PowerPoint似乎比SharpDX具有更寬的字符間距,但不多,但是經過一些字母處理后,PowerPoint中的文本換行比SharpDX中的換行要早。

樣本圖片

如果您查看示例圖像,我會以100%的比例拍攝PowerPoint幻燈片的屏幕截圖,然后將SharpDX的屏幕截圖渲染到表單中。 我已經將SharpDX圖像覆蓋在PowerPoint圖像之上。

SharpDX文本更長,因為它已經“適合”給定的字體大小。

文本:ΑποτελέσματαέναντιΠαγκόσμιοΠρότυποΥψηλώνΕπιδόσεων字體:Arial 11pt文本框大小:444px x 24px(4.63“ x 0.26”)0周圍有空白

在PowerPoint中,如果沒有縮小以適合文本,則將自動換行。

在SharpDX中,文本不會自動換行。

我正在使用公式將字體大小從點轉換為像素:

像素=點x 96f / 72f;

我還沒有找到在SharpDX中設置字符間距的方法。 這有可能嗎?

我已經觀察到您的要求,並且希望與他人分享Aspose.Slides僅使用PowerPoint的內部屬性進行文字換行,例如縮小文字形狀或調整形狀以適應形狀中的文字數量。 沒有這樣的界限。 但是,您可以獲得在其中封裝文本的形狀的x,y,寬度和高度。

Presentation pres=new Presentation("TEST.pptx");
ISlide slide=pres.Slides[0];
//Shape holding text is an AutoShape
IAutoShape ashp=(IAutoShape)slide.Shapes[0]; 

float x=ashp.X;
float y=ashp.Y;
float width=ashp.Width;
float height =ashp.Height;

請注意,返回的值映射到每英寸72像素。 即,一個10英寸X 7.5英寸的標准幻燈片在Aspose中的尺寸為720 x540。我希望這會有所幫助。

我在Aspose擔任開發人員/宣傳員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM