फ़ॉन्ट नाम स्थानीयकृत होते हैं यदि फ़ॉन्ट निर्माता एक विशिष्ट लोकेल के लिए मेटाडेटा प्रकाशित करना चुनता है, लेकिन सभी फ़ॉन्ट्स में सिस्टम-ज्ञात नाम होता है, आमतौर पर पोस्टस्क्रिप्ट नाम होता है, जो सुनिश्चित करता है कि उसी फ़ॉन्ट को संदर्भित किया जा सके और उचित के साथ पुनर्प्राप्त किया जा सके विश्वसनीयता की मात्रा।
ओपनटाइप और ट्रू टाइप फ़ॉन्ट्स के लिए, आप ओपनटाइप फ़ाइल के name
रिकॉर्ड में स्थानीय नाम ढूंढ सकते हैं।
The Naming Table (OpenType Spec 1.6) @ Microsoft Typography
Font Names Table (TrueType Spec) @ Apple
पोस्टस्क्रिप्ट टाइप 1 फोंट के लिए, आप अपने FontName घोषणाओं द्वारा आवंटित नाम ढूँढ सकते हैं।
Adobe Type 1 Font Format @ Adobe (PDF)
अद्यतन:
मैं देखना पोस्टस्क्रिप्ट नाम एक फ़ॉन्ट का दृष्टांत लिए इस्तेमाल किया जा सकता है या नहीं, और दुर्भाग्य से यह काम नहीं करता जाँच की। हालांकि, स्थानीय नाम का उपयोग (जैसा कि मार्क रान्ससम के लिंक से उनकी टिप्पणी में पुनर्प्राप्त किया गया है) काम करता है। यह नमूना सी # में है।
using System.Drawing;
namespace FontNameCheckApplication
{
class Program
{
[STAThread]
static void Main(string[] args)
{
Font TimesNewRomanByPSName = new Font("TimesNewRomanPSMT", 16f);
Console.WriteLine("TimesNewRomanPSMT = {0}", TimesNewRomanByPSName.Name);
Font TimesNewRomanByName = new Font("Times New Roman", 16f);
Console.WriteLine("Times New Roman = {0}", TimesNewRomanByName.Name);
Font ArialByPSName = new Font("ArialMT", 16f);
Console.WriteLine("ArialMT = {0}", ArialByPSName.Name);
Font ArialByName = new Font("Arial", 16f);
Console.WriteLine("Arial = {0}", ArialByName.Name);
Font GulimByEnglishName = new Font("Gulim", 16f);
Console.WriteLine("Gulim = {0}", GulimByEnglishName.Name);
Font GulimByKoreanName = new Font("굴림", 16f);
Console.WriteLine("굴림 = {0}", GulimByKoreanName.Name);
Console.ReadKey();
}
}
}
फ़ॉन्ट प्रतिस्थापन के साथ दुर्भाग्य से हम butted गया है सिर, के रूप में "माइक्रोसॉफ्ट सैंस सेरिफ़" निश्चित रूप से Times New Roman है और न ही एरियल नहीं है। यह इंगित करता है कि पोस्टस्क्रिप्ट नाम का उपयोग उसी फ़ॉन्ट के संदर्भ में विश्वसनीय रूप से नहीं किया जा सकता है।
TimesNewRomanPSMT = Microsoft Sans Serif
Times New Roman = Times New Roman
ArialMT = Microsoft Sans Serif
Arial = Arial
Gulim = Gulim
?? = Gulim
अद्यतन # 2::
यहाँ Win32 के लिए एक नमूना है
यहाँ उत्पादन है।
ध्यान देने योग्य एक बात यह है कि CreateFontIndirect()
प्रतिस्थापन के अधीन है। इस नमूने को चलाने के दौरान, पोस्टस्क्रिप्ट नामों के लिए भी मुझे खाली संभाल नहीं मिला। यह देखने के लिए कि क्या हम एक अनुपस्थित मैच प्राप्त कर सकते हैं, हमें उपलब्ध सिस्टम फ़ॉन्ट सूची को स्कैन करने के लिए EnumFontFamiliesEx()
का उपयोग करना चाहिए। हमें सी # के समान परिणाम मिलते हैं, लेकिन प्रतिस्थापन के बिना। कुछ फोंट के लिए परिणाम ग्राफिक्स मोड सेटिंग के आधार पर हो सकते हैं (SetGraphicsMode()
/GM_ADVANCED देखें)।
LOGFONT structure (Windows) @ MSDN
CreateFontIndirect function (Windows) @ MSDN
SetGraphicsMode function (Windows) @ MSDN
EnumFontFamiliesEx function (Windows) @ MSDN
EnumFontFamExProc callback function (Windows) @ MSDN
#include "stdafx.h"
#include <Windows.h>
void TestCreateFont(LPCTSTR lpczFontName, BYTE bCharSet)
{
LOGFONT lf;
lf.lfHeight = 0;
lf.lfWidth = 0;
lf.lfEscapement = 0;
lf.lfOrientation = 0;
lf.lfWeight = FW_DONTCARE;
lf.lfItalic = FALSE;
lf.lfUnderline = FALSE;
lf.lfStrikeOut = FALSE;
lf.lfCharSet = bCharSet;
lf.lfOutPrecision = OUT_OUTLINE_PRECIS;
lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
lf.lfQuality = DEFAULT_QUALITY;
lf.lfPitchAndFamily = DEFAULT_PITCH;
// NOTE: LF_FACESIZE = 32, WinGdi.h
_tcsncpy_s(lf.lfFaceName, 32, lpczFontName, _tcsnlen(lpczFontName, 32));
HFONT hf = ::CreateFontIndirect(&lf);
// NOTE: LF_FACESIZE = 32, WinGdi.h
_tprintf_s(_T("TestCreateFont:\r\n%.32s = %.32s, bCharSet=%d, HFONT=0x%8.8x\r\n\r\n"), lpczFontName, lf.lfFaceName, bCharSet, hf);
::DeleteObject(hf);
}
int CALLBACK MyEnumFontFamExProc(const LOGFONT *lpelfe, const TEXTMETRIC *lpntme, DWORD FontType, LPARAM lParam)
{
_tprintf_s(_T(" Found: %.32s, bCharSet=%d\r\n"), lpelfe->lfFaceName, lpelfe->lfCharSet);
return 1;
}
void TestEnumFontFamiliesEx(LPCTSTR lpczFontName, BYTE bCharSet)
{
LOGFONT lf;
lf.lfHeight = 0;
lf.lfWidth = 0;
lf.lfEscapement = 0;
lf.lfOrientation = 0;
lf.lfWeight = FW_DONTCARE;
lf.lfItalic = FALSE;
lf.lfUnderline = FALSE;
lf.lfStrikeOut = FALSE;
lf.lfCharSet = bCharSet;
lf.lfOutPrecision = OUT_OUTLINE_PRECIS;
lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
lf.lfQuality = DEFAULT_QUALITY;
lf.lfPitchAndFamily = DEFAULT_PITCH; // NOTE: DEFAULT_PITCH = 0, WinGdi.h
// NOTE: LF_FACESIZE = 32, WinGdi.h
_tcsncpy_s(lf.lfFaceName, 32, lpczFontName, _tcsnlen(lpczFontName, 32));
_tprintf_s(_T("TestEnumFontFamiliesEx: %.32s, bCharSet=%d\r\n"), lpczFontName, bCharSet);
HDC hdcAll = GetDC(NULL);
::EnumFontFamiliesEx(hdcAll, &lf, &MyEnumFontFamExProc, 0, 0);
}
int _tmain(int argc, _TCHAR* argv[])
{
TestCreateFont(_T("TimesNewRomanPSMT"), DEFAULT_CHARSET);
TestCreateFont(_T("Times New Roman"), DEFAULT_CHARSET);
TestCreateFont(_T("ArialMT"), DEFAULT_CHARSET);
TestCreateFont(_T("Arial"), DEFAULT_CHARSET);
TestCreateFont(_T("Gulim"), DEFAULT_CHARSET);
TestCreateFont(_T("굴림"), DEFAULT_CHARSET);
TestEnumFontFamiliesEx(_T("TimesNewRomanPSMT"), DEFAULT_CHARSET);
TestEnumFontFamiliesEx(_T("Times New Roman"), DEFAULT_CHARSET);
TestEnumFontFamiliesEx(_T("ArialMT"), DEFAULT_CHARSET);
TestEnumFontFamiliesEx(_T("Arial"), DEFAULT_CHARSET);
TestEnumFontFamiliesEx(_T("Gulim"), DEFAULT_CHARSET);
TestEnumFontFamiliesEx(_T("굴림"), DEFAULT_CHARSET);
return 0;
}
और यहाँ परिणाम हैं:
TestCreateFont:
TimesNewRomanPSMT = TimesNewRomanPSMT, bCharSet=1, HFONT=0xda0a117c
TestCreateFont:
Times New Roman = Times New Roman, bCharSet=1, HFONT=0xdb0a117c
TestCreateFont:
ArialMT = ArialMT, bCharSet=1, HFONT=0xdc0a117c
TestCreateFont:
Arial = Arial, bCharSet=1, HFONT=0xdd0a117c
TestCreateFont:
Gulim = Gulim, bCharSet=1, HFONT=0xde0a117c
TestCreateFont:
?? = ??, bCharSet=1, HFONT=0xdf0a117c
TestEnumFontFamiliesEx: TimesNewRomanPSMT, bCharSet=1
TestEnumFontFamiliesEx: Times New Roman, bCharSet=1
Found: Times New Roman, bCharSet=0
Found: Times New Roman, bCharSet=177
Found: Times New Roman, bCharSet=178
Found: Times New Roman, bCharSet=161
Found: Times New Roman, bCharSet=162
Found: Times New Roman, bCharSet=186
Found: Times New Roman, bCharSet=238
Found: Times New Roman, bCharSet=204
Found: Times New Roman, bCharSet=163
Found: Times New Roman, bCharSet=0
Found: Times New Roman, bCharSet=177
Found: Times New Roman, bCharSet=161
Found: Times New Roman, bCharSet=162
Found: Times New Roman, bCharSet=186
Found: Times New Roman, bCharSet=238
Found: Times New Roman, bCharSet=204
Found: Times New Roman, bCharSet=163
Found: Times New Roman, bCharSet=0
Found: Times New Roman, bCharSet=177
Found: Times New Roman, bCharSet=178
Found: Times New Roman, bCharSet=161
Found: Times New Roman, bCharSet=162
Found: Times New Roman, bCharSet=186
Found: Times New Roman, bCharSet=238
Found: Times New Roman, bCharSet=204
Found: Times New Roman, bCharSet=163
Found: Times New Roman, bCharSet=0
Found: Times New Roman, bCharSet=177
Found: Times New Roman, bCharSet=161
Found: Times New Roman, bCharSet=162
Found: Times New Roman, bCharSet=186
Found: Times New Roman, bCharSet=238
Found: Times New Roman, bCharSet=204
Found: Times New Roman, bCharSet=163
TestEnumFontFamiliesEx: ArialMT, bCharSet=1
TestEnumFontFamiliesEx: Arial, bCharSet=1
Found: Arial, bCharSet=0
Found: Arial, bCharSet=177
Found: Arial, bCharSet=178
Found: Arial, bCharSet=161
Found: Arial, bCharSet=162
Found: Arial, bCharSet=186
Found: Arial, bCharSet=238
Found: Arial, bCharSet=204
Found: Arial, bCharSet=163
Found: Arial, bCharSet=0
Found: Arial, bCharSet=177
Found: Arial, bCharSet=161
Found: Arial, bCharSet=162
Found: Arial, bCharSet=186
Found: Arial, bCharSet=238
Found: Arial, bCharSet=204
Found: Arial, bCharSet=163
Found: Arial, bCharSet=0
Found: Arial, bCharSet=177
Found: Arial, bCharSet=178
Found: Arial, bCharSet=161
Found: Arial, bCharSet=162
Found: Arial, bCharSet=186
Found: Arial, bCharSet=238
Found: Arial, bCharSet=204
Found: Arial, bCharSet=163
Found: Arial, bCharSet=0
Found: Arial, bCharSet=177
Found: Arial, bCharSet=161
Found: Arial, bCharSet=162
Found: Arial, bCharSet=186
Found: Arial, bCharSet=238
Found: Arial, bCharSet=204
Found: Arial, bCharSet=163
TestEnumFontFamiliesEx: Gulim, bCharSet=1
Found: Gulim, bCharSet=0
Found: Gulim, bCharSet=129
Found: Gulim, bCharSet=161
Found: Gulim, bCharSet=162
Found: Gulim, bCharSet=186
Found: Gulim, bCharSet=238
Found: Gulim, bCharSet=204
TestEnumFontFamiliesEx: ??, bCharSet=1
Found: Gulim, bCharSet=0
Found: Gulim, bCharSet=129
Found: Gulim, bCharSet=161
Found: Gulim, bCharSet=162
Found: Gulim, bCharSet=186
Found: Gulim, bCharSet=238
Found: Gulim, bCharSet=204
यहाँसे एक टुकड़ा है CharSet मानों के लिए।
#define ANSI_CHARSET 0
#define DEFAULT_CHARSET 1
#define SYMBOL_CHARSET 2
#define SHIFTJIS_CHARSET 128
#define HANGEUL_CHARSET 129
#define HANGUL_CHARSET 129
#define GB2312_CHARSET 134
#define CHINESEBIG5_CHARSET 136
#define OEM_CHARSET 255
#define JOHAB_CHARSET 130
#define HEBREW_CHARSET 177
#define ARABIC_CHARSET 178
#define GREEK_CHARSET 161
#define TURKISH_CHARSET 162
#define VIETNAMESE_CHARSET 163
#define THAI_CHARSET 222
#define EASTEUROPE_CHARSET 238
#define RUSSIAN_CHARSET 204
#define MAC_CHARSET 77
#define BALTIC_CHARSET 186
स्थानीय फ़ॉन्ट नामों में से कुछ उदाहरण यहां पाया जा सकता: http://www.trigeminal.com/samples/font_choices.html –