diff options
author | Caolán McNamara <caolanm@redhat.com> | 2011-10-20 12:53:31 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2011-10-20 12:54:56 +0100 |
commit | ada314807900a6b9205bacc1b149ab58720ffa7b (patch) | |
tree | 1879f48f49f561ac9e3ecb10b19fc55b006f89c7 /svtools | |
parent | 06fa2d5a4a9b68a173a09df6000756dce47f7b3d (diff) |
add makeRepresentativeTextForLanguage to generate sample text
add initial code to generate language specific sample preview text samples for
use for font previewing in format->character
Diffstat (limited to 'svtools')
-rw-r--r-- | svtools/inc/svtools/sampletext.hxx | 2 | ||||
-rw-r--r-- | svtools/source/misc/sampletext.cxx | 137 |
2 files changed, 137 insertions, 2 deletions
diff --git a/svtools/inc/svtools/sampletext.hxx b/svtools/inc/svtools/sampletext.hxx index 1100c8a16e6d..09ba499955fc 100644 --- a/svtools/inc/svtools/sampletext.hxx +++ b/svtools/inc/svtools/sampletext.hxx @@ -31,6 +31,7 @@ #include "svtools/svtdllapi.h" #include <rtl/ustring.hxx> #include <unicode/uscript.h> +#include <i18npool/lang.h> #include <vcl/fontcapabilities.hxx> class OutputDevice; @@ -44,6 +45,7 @@ SVT_DLLPUBLIC bool canRenderNameOfSelectedFont(OutputDevice &rDevice); SVT_DLLPUBLIC rtl::OUString makeRepresentativeSymbolTextForSelectedFont(OutputDevice &rDevice); SVT_DLLPUBLIC rtl::OUString makeRepresentativeTextForSelectedFont(OutputDevice &rDevice); +SVT_DLLPUBLIC rtl::OUString makeRepresentativeTextForLanguage(LanguageType eLang); SVT_DLLPUBLIC rtl::OUString makeRepresentativeTextForScript(UScriptCode eScript); SVT_DLLPUBLIC rtl::OUString makeMinimalTextForScript(UScriptCode eScript); diff --git a/svtools/source/misc/sampletext.cxx b/svtools/source/misc/sampletext.cxx index 6cf16045805a..45a6ba9f888b 100644 --- a/svtools/source/misc/sampletext.cxx +++ b/svtools/source/misc/sampletext.cxx @@ -117,6 +117,16 @@ rtl::OUString makeRepresentativeSymbolTextForSelectedFont(OutputDevice &rDevice) return bHasSampleTextGlyphs ? sSampleText : rtl::OUString(); } +//These ones are typically for use in the font dropdown box beside the +//fontname, so say things roughly like "Script/Alphabet/Name-Of-Major-Language" +// +//Here we don't always know the language of course, only the script that can be +//written with the font. Often that's one single language written in that +//script, or a handful of related languages where the name of the script is the +//same between languages, or the name in the major language is known by most +//readers of the minor languages, e.g. Yiddish is written with the HEBREW +//script as well, the vast majority of Yiddish readers will be able to read +//Hebrew as well. rtl::OUString makeRepresentativeTextForScript(UScriptCode eScript) { rtl::OUString sSampleText; @@ -427,8 +437,131 @@ rtl::OUString makeMinimalTextForScript(UScriptCode eScript) return sSampleText; } -#define TRADITIONAL_CHINESE 0x01000000 -#define SIMPLIFIED_CHINESE 0x02000000 +//These ones are typically for use in the font preview window in format +//character +// +//There we generally know the language. Though its possible for the language to +//be "none". +// +//Currently we fall back to makeRepresentativeTextForScript as I don't have +//suitable strings +rtl::OUString makeRepresentativeTextForLanguage(LanguageType eLang) +{ + switch( eLang ) + { + case LANGUAGE_CHINESE: + return makeRepresentativeTextForScript(USCRIPT_HAN); + + case LANGUAGE_CHINESE_TRADITIONAL: + case LANGUAGE_CHINESE_HONGKONG: + case LANGUAGE_CHINESE_MACAU: + return makeRepresentativeTextForScript(USCRIPT_TRADITIONAL_HAN); + + case LANGUAGE_CHINESE_SIMPLIFIED: + case LANGUAGE_CHINESE_SINGAPORE: + return makeRepresentativeTextForScript(USCRIPT_SIMPLIFIED_HAN); + } + + rtl::OUString sRet; + switch( eLang & LANGUAGE_MASK_PRIMARY ) + { + case LANGUAGE_GREEK & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_GREEK); + break; + case LANGUAGE_HEBREW & LANGUAGE_MASK_PRIMARY: + case LANGUAGE_YIDDISH & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_HEBREW); + break; + case LANGUAGE_ARABIC_SAUDI_ARABIA & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_ARABIC); + break; + case LANGUAGE_HINDI & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_DEVANAGARI); + break; + case LANGUAGE_ASSAMESE & LANGUAGE_MASK_PRIMARY: + { + const sal_Unicode aAs[] = { + 0x0985, 0x09B8, 0x09AE, 0x09C0, 0x09AF, 0x09BC, 0x09BE, + 0x0020, 0x0986, 0x0996, 0x09F0 + }; + sRet = rtl::OUString(aAs, SAL_N_ELEMENTS(aAs)); + break; + } + case LANGUAGE_BENGALI & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_BENGALI); + break; + case LANGUAGE_PUNJABI & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_GURMUKHI); + break; + case LANGUAGE_GUJARATI & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_GUJARATI); + break; + case LANGUAGE_ORIYA & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_ORIYA); + break; + case LANGUAGE_TAMIL & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_TAMIL); + break; + case LANGUAGE_TELUGU & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_TELUGU); + break; + case LANGUAGE_KANNADA & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_KANNADA); + break; + case LANGUAGE_MALAYALAM & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_MALAYALAM); + break; + case LANGUAGE_THAI & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_THAI); + break; + case LANGUAGE_LAO & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_LAO); + break; + case LANGUAGE_GEORGIAN & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_GEORGIAN); + break; + case LANGUAGE_KOREAN & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_KOREAN); + break; + case LANGUAGE_TIBETAN & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_TIBETAN); + break; + case LANGUAGE_SYRIAC & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_SYRIAC); + break; + case LANGUAGE_SINHALESE_SRI_LANKA & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_SINHALA); + break; + case LANGUAGE_BURMESE & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_MYANMAR); + break; + case LANGUAGE_AMHARIC_ETHIOPIA & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_ETHIOPIC); + break; + case LANGUAGE_CHEROKEE_UNITED_STATES & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_CHEROKEE); + break; + case LANGUAGE_KHMER & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_KHMER); + break; + case LANGUAGE_MONGOLIAN & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_MONGOLIAN); + break; + case LANGUAGE_USER_TAGALOG & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_TAGALOG); + break; + case LANGUAGE_JAPANESE & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_JAPANESE); + break; + case LANGUAGE_YI & LANGUAGE_MASK_PRIMARY: + sRet = makeRepresentativeTextForScript(USCRIPT_YI); + break; + default: + break; + } + + return sRet; +} namespace { |