Itext 7 and C# - Different font for special characters - c#

Currently I use Custom Font as a default font for all my reports. Lately I was asked to handle special characters in text from "Segoe UI Symbol" font (Custom font still must be default for text).
Let's say that this is my header input text, and [Symbol] is one of "Segoe UI Symbol" symbols:
"This is my pdf [Symbol] report header [Symbol]"
Result that I've got looks like this:
"This is my pdf [X] report header [X]"
[X] - indicates that character cannot be rendered.
When i switch font to "Segoe UI Symbol", special characters will display fine on pdf.
Is there any way to keep custom font for all text but use "Segoe UI Symbol" font for all special characters that cannot be rendered. Like a subsitution font (there was something like this in acrofields). Or is there any other possible solution? Text can contain none, one or multiple symbols.

Related

Looking to bold certain sections of a WPF RTF text through C#

I'm looking for a code-how that can bold selective words and/or lines of text within one of WPF's RichTextBoxes, so that, for example, I could have code that ensures the word bananabread would be automatically set to bold whenever it were typed. Another example of this could be setting an entire line to bold if it begins with the word "Therefore."
I'm aware that you can bold specific lines via XAML, and I know that pressing Ctrl + B can bold specific words while in the editor itself, but how can I go about doing this through C#?

How to display Unicode control characters in a WPF TextBox?

My users do a lot of bi-directional text editing, it is not uncommon for them to sprinkle the text with some Left-to-right and/or Right-to-left marks. Sometimes they want to see where those marks are located in the text in order to move or delete them.
The TextBox control in Windows Forms offers a default context menu with some Unicode-related entries, one of which is Show Unicode control characters
Enabling this option will force the control to draw the glyphs defined in the corresponding font for those non-printable characters.
For example, if I set the Text property of a TextBox control to "Hello \u200E World!" and enable this option, I will get the LRM character rendered using its glyph as defined in the font file (font used is Segoe UI).
If we open the Segoe UI font in a font-editing software (I used FontForge), we can see that indeed there are glyphs defined for the LRM and RLM code points.
I also found that StringFormatFlags enumeration can be used to control how these characters are rendered in GDI+, specifically by providing the DisplayFormatControl flag to the StringFormat object:
private void Form_Paint(object sender, PaintEventArgs e)
{
var text = "Hello \u200E World!";
var g = e.Graphics;
// Will draw LRM symbol with its representative glyph
var fmt = new StringFormat(StringFormatFlags.DisplayFormatControl);
g.DrawString(text, Font, Brushes.Black, 10, 10, fmt);
}
However, I haven't found anything similar in WPF TextBox or RichTextBox control: the default context menu provides only Copy, Cut and Paste commands and none of the control properties (including attached ones) seem to enable the drawing of control characters with their font-defined glyphs.
Is there a way to draw Unicode control characters with their representative glyphs in WPF TextBox or RichTextBox without resorting to various hacks, such as replacing those characters with other ones in a converter?

HttpUtility does not decode "𠮟"

With all others characters HttpUtility works well but with this encoded value 𠮟 it just does not want to decode.
Decoded should be 𠮟.
Image attached: http://screencast.com/t/r3TxPHrYr5
Check to make sure that whatever font you're using to display the character has an associated glyph for that code point. Not all fonts have glyphs for all Unicode code points. Consolas, for one, has a relatively small set of glyphs, while Arial Unicode has glyphs for many of the defined Unicode code points. You can use the Character Map utility on Windows to verify that your font has a glyph for the code point in question. Fonts that don't have an associated glyph may either show nothing at all, a box with an X in it, a black diamond with a ? embedded within it (Firefox does this, I think), a ?, or even a ??.
HTH.

How to use custom font in visual studio 2008 for C#.net window application?

I want to use Indian Font (Hindi) in Windows apps.When i used Mangal font for Hindi text ,then text visible but in block format.
so any one can help me for this.
Create New windows forms project and in Form.OnLoad handler, add the following lines:
PrivateFontCollection pfc = new PrivateFontCollection();
string fontFilePath = "C:\\Fonts\\PALETX3.ttf"
pfc.AddFontFile(fontFilePath);
label1.Font = new Font(pfc.Families[0], 16, FontStyle.Regular);
You can find more information from
http://msdn.microsoft.com/en-us/library/ms533820(VS.85).aspx
You can use this code:
YourMainForm.YourTextBox.Font = new Font("Your name of indian font",
YourMainForm.YourTextBox.Font.Size);
Make sure the font you are using supports the Unicode characters in controls. You can find this out using windows utility Character Map.
Some older fonts have characters for a certain code page but not for Unicode characters. For example windows font Marlett have only a few Unicode chars defined, the rest will appear as the boxes in your screen shot. If that is the case your best bet is to find a newer Unicode version of the font. Although in theory you can use font editing software to create a new version yourself (the glyphs are already in there) but it won't be easy. Best of luck :)

What font is used if a Unicode-character is not found in the selected font (Tahoma)?

I have written a WPF user control that uses Tahoma as a font to display unicode strings, which works fine. However, I have noticed that some eastern asian characters are actually missing in Tahoma, i.e. this font does not support all common Unicode characters.
However, when I display a string that contains some east asian letters, that I suppose are missing in Tahoma.ttf, the character is displayed correctly anyway, instead of a black rectangle that I expected to get for the missing unicode character.
So out of curiosity: is there any fallback mechanism, i.e. does Windows 7 or C# WPF replace the missing characters from a fallback font? Can anybody please explain how exactly this is working, and which font is actually used as a allback?
See the Font Fallback section of the FontFamily reference.
Thanks alot H.B., with your keyword, I was able to find this really helpful ressource from Microsoft, that explains how Font Fallback and Font Linking work:
http://msdn.microsoft.com/en-us/goglobal/bb688134
Here is a good quote:
A user running Windows XP selects the Tahoma font to enter some text first in English, next in Hebrew, and then in Telugu. Since Tahoma is an OpenType font, it provides support for Latin and Hebrew scripts, but does not contain any Telugu glyphs. Uniscribe detects this lack of font support and automatically renders the Telugu script by using its fallback font, which is Gautami.

Categories