summaryrefslogtreecommitdiff
path: root/svx/source/dialog
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/dialog')
-rw-r--r--svx/source/dialog/charmap.cxx537
-rw-r--r--svx/source/dialog/charmap.hrc9
-rw-r--r--svx/source/dialog/charmap.src508
3 files changed, 952 insertions, 102 deletions
diff --git a/svx/source/dialog/charmap.cxx b/svx/source/dialog/charmap.cxx
index 94eb6e60359a..a1aba7676f7e 100644
--- a/svx/source/dialog/charmap.cxx
+++ b/svx/source/dialog/charmap.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: charmap.cxx,v $
*
- * $Revision: 1.1.1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: hr $ $Date: 2000-09-18 17:01:07 $
+ * last change: $Author: hdu $ $Date: 2000-10-17 17:12:59 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -64,6 +64,10 @@
#ifndef _SHL_HXX
#include <tools/shl.hxx>
#endif
+#ifndef _TOOLS_DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+
#ifndef _SV_SOUND_HXX
#include <vcl/sound.hxx>
#endif
@@ -81,19 +85,27 @@
#include "charmap.hxx"
#include "dialmgr.hxx"
+#include <rtl/textenc.h>
+
// class SvxShowCharSet --------------------------------------------------
-SvxShowCharSet::SvxShowCharSet( Window* pParent, const ResId& rResId ) :
+#define SBWIDTH 16
- Control( pParent, rResId )
+SvxShowCharSet::SvxShowCharSet( Window* pParent, const ResId& rResId ) :
+ Control( pParent, rResId ),
+ aVscrollSB( this, WB_VERT),
+ selectedIndex( FirstInMap())
{
- Size aOutputSize = GetOutputSizePixel();
- c = 32;
- nX = aOutputSize.Width() / COLUMN_COUNT;
- nY = aOutputSize.Height() / ROW_COUNT;
+ origSize = GetOutputSizePixel();
+ origPos = GetPosPixel();
+
+ SetStyle( GetStyle() | WB_CLIPCHILDREN);
+ aVscrollSB.SetScrollHdl( LINK( this, SvxShowCharSet, VscrollHdl ) );
+ aVscrollSB.EnableDrag( TRUE);
+ // other aVscroll settings depend on selected font => see SetFont
+
bDrag = FALSE;
- SetOutputSizePixel( Size( nX * COLUMN_COUNT, nY * ROW_COUNT ) );
InitSettings( TRUE, TRUE );
}
@@ -102,7 +114,7 @@ SvxShowCharSet::SvxShowCharSet( Window* pParent, const ResId& rResId ) :
void SvxShowCharSet::GetFocus()
{
Control::GetFocus();
- SelectCharacter( c, TRUE );
+ SelectIndex( selectedIndex, TRUE );
}
// -----------------------------------------------------------------------
@@ -110,7 +122,7 @@ void SvxShowCharSet::GetFocus()
void SvxShowCharSet::LoseFocus()
{
Control::LoseFocus();
- SelectCharacter( c, TRUE );
+ SelectIndex( selectedIndex, TRUE );
}
// -----------------------------------------------------------------------
@@ -129,7 +141,8 @@ void SvxShowCharSet::StateChanged( StateChangedType nType )
void SvxShowCharSet::DataChanged( const DataChangedEvent& rDCEvt )
{
- if ( ( rDCEvt.GetType() == DATACHANGED_SETTINGS ) && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
+ if ( ( rDCEvt.GetType() == DATACHANGED_SETTINGS )
+ && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
InitSettings( TRUE, TRUE );
else
Control::DataChanged( rDCEvt );
@@ -147,9 +160,8 @@ void SvxShowCharSet::MouseButtonDown( const MouseEvent& rMEvt )
bDrag = TRUE;
CaptureMouse();
- long n = (rMEvt.GetPosPixel().Y() / nY) * COLUMN_COUNT +
- (rMEvt.GetPosPixel().X() / nX) + 32;
- SelectCharacter( (sal_Unicode)Min( n, 255L ) );
+ int index = PixelToMapIndex( rMEvt.GetPosPixel());
+ SelectIndex( index);
}
if ( !(rMEvt.GetClicks() % 2) )
@@ -163,7 +175,7 @@ void SvxShowCharSet::MouseButtonUp( const MouseEvent& rMEvt )
{
if ( bDrag && rMEvt.IsLeft() )
{
- // Mouse ueber der Char-Auswahl losgelassen
+ // released mouse over character map
if ( Rectangle(Point(), GetOutputSize()).IsInside(rMEvt.GetPosPixel()))
aSelectHdl.Call( this );
ReleaseMouse();
@@ -189,14 +201,84 @@ void SvxShowCharSet::MouseMove( const MouseEvent& rMEvt )
else if ( aPos.Y() > aSize.Height()-5 )
aPos.Y() = aSize.Height()-5;
- long n = (aPos.Y() / nY) * COLUMN_COUNT +
- (aPos.X() / nX) + 32;
- SelectCharacter( (sal_Unicode)Min( n, 255L ) );
+ int index = PixelToMapIndex( aPos);
+ SelectIndex( index );
}
}
// -----------------------------------------------------------------------
+void SvxShowCharSet::Command( const CommandEvent& rCEvt )
+{
+ if( !HandleScrollCommand( rCEvt, 0, &aVscrollSB ) )
+ Control::Command( rCEvt );
+}
+
+// -----------------------------------------------------------------------
+// TODO: LastInMap(), UnicodeToMapIndex() and MapIndexToUnicode() should be in Font,
+// we let them mature here though because it is currently the only use
+
+#define FIRST_UNICODE sal_Unicode(0x0020) // ASCII space code
+#define LAST_UNICODE sal_Unicode(0xFFFF) // end of UCS-16
+
+inline int SvxShowCharSet::FirstInMap( void) const
+{
+ return 0;
+}
+
+inline int SvxShowCharSet::LastInMap( void) const
+{
+ if( GetFont().GetCharSet() == RTL_TEXTENCODING_SYMBOL)
+ return (0x0FF - 0x020);
+ return (LAST_UNICODE - FIRST_UNICODE);
+}
+
+inline int SvxShowCharSet::FirstInView( void) const
+{
+ int idx = FirstInMap();
+ if( aVscrollSB.IsVisible())
+ idx += aVscrollSB.GetThumbPos() * COLUMN_COUNT;
+ return idx;
+}
+
+inline int SvxShowCharSet::LastInView( void) const
+{
+ int idx = FirstInView();
+ idx += ROW_COUNT * COLUMN_COUNT - 1;
+ return Min( idx, LastInMap());
+}
+
+inline int SvxShowCharSet::UnicodeToMapIndex( sal_Unicode c) const
+{
+ //TODO: should depend on font and encoding, change when Font can provide info
+ int mapIndex = c - FIRST_UNICODE;
+ if( mapIndex < FirstInMap() || mapIndex > LastInMap())
+ mapIndex = FirstInMap();
+ return mapIndex;
+}
+
+inline Point SvxShowCharSet::MapIndexToPixel( int index) const
+{
+ int base = FirstInView();
+ int x = ((index - base) % COLUMN_COUNT) * nX;
+ int y = ((index - base) / COLUMN_COUNT) * nY;
+ return Point( x, y);
+}
+
+inline int SvxShowCharSet::PixelToMapIndex( const Point point) const
+{
+ int base = FirstInView();
+ return (base + (point.X()/nX) + (point.Y()/nY) * COLUMN_COUNT);
+}
+
+inline sal_Unicode SvxShowCharSet::MapIndexToUnicode( int index) const
+{
+ //TODO: should depend on font and encoding, change when Font can provide info
+ return (FIRST_UNICODE + index);
+}
+
+// -----------------------------------------------------------------------
+
void SvxShowCharSet::KeyInput( const KeyEvent& rKEvt )
{
KeyCode aCode = rKEvt.GetKeyCode();
@@ -208,15 +290,15 @@ void SvxShowCharSet::KeyInput( const KeyEvent& rKEvt )
}
sal_Unicode cChar = (sal_Unicode)rKEvt.GetCharCode();
-
- if ( cChar > 32 )
+ int mapIndex = UnicodeToMapIndex( cChar);
+ if ( mapIndex>FirstInMap() && mapIndex<=LastInMap())
{
- SelectCharacter( cChar );
+ SelectIndex( mapIndex );
aPreSelectHdl.Call( this );
return;
}
- FASTBOOL bPreSelect = TRUE;
+ int tmpSelected = selectedIndex;
switch ( aCode.GetCode() )
{
@@ -224,65 +306,70 @@ void SvxShowCharSet::KeyInput( const KeyEvent& rKEvt )
aSelectHdl.Call( this );
break;
case KEY_LEFT:
- if ( c > 32 )
- SelectCharacter( c-1 );
+ --tmpSelected;
break;
case KEY_RIGHT:
- if ( c < 255 )
- SelectCharacter( c+1 );
+ ++tmpSelected;
break;
case KEY_UP:
- if ( c-COLUMN_COUNT >= 32 )
- SelectCharacter( c-COLUMN_COUNT );
+ tmpSelected -= COLUMN_COUNT;
break;
case KEY_DOWN:
- if ( c+COLUMN_COUNT <= 255 )
- SelectCharacter( c+COLUMN_COUNT );
+ tmpSelected += COLUMN_COUNT;
+ break;
+ case KEY_PAGEUP:
+ tmpSelected -= ROW_COUNT * COLUMN_COUNT;
+ break;
+ case KEY_PAGEDOWN:
+ tmpSelected += ROW_COUNT * COLUMN_COUNT;
break;
case KEY_HOME:
- SelectCharacter( 32 );
+ tmpSelected = FirstInMap();
break;
case KEY_END:
- SelectCharacter( 255 );
+ tmpSelected = LastInMap();
break;
default:
- bPreSelect = FALSE;
Control::KeyInput( rKEvt );
}
- if ( bPreSelect )
+ if ( tmpSelected >= FirstInMap() &&tmpSelected <= LastInMap() ) {
+ SelectIndex( tmpSelected, TRUE);
aPreSelectHdl.Call( this );
+ }
}
// -----------------------------------------------------------------------
void SvxShowCharSet::Paint( const Rectangle& )
{
- DrawChars_Impl( 32, 256 );
+ DrawChars_Impl( FirstInView(), LastInView());
}
// -----------------------------------------------------------------------
-void SvxShowCharSet::DrawChars_Impl( USHORT n1, USHORT n2 )
+void SvxShowCharSet::DrawChars_Impl( int n1, int n2)
{
- USHORT i;
- long x, y;
- Size aOutputSize;
- String aCharStr;
+ if( n1 > LastInView() || n2 < FirstInView())
+ return;
- aOutputSize = GetOutputSizePixel();
+ Size aOutputSize = GetOutputSizePixel();
+ if( aVscrollSB.IsVisible())
+ aOutputSize.setWidth( aOutputSize.Width() - SBWIDTH);
- for ( i = 1; i < COLUMN_COUNT; i++ )
+ int i;
+ for ( i = 1; i < COLUMN_COUNT; ++i)
DrawLine( Point( nX * i, 0 ), Point( nX * i, aOutputSize.Height() ) );
- for ( i = 1; i < ROW_COUNT; i++ )
+ for ( i = 1; i < ROW_COUNT; ++i )
DrawLine( Point( 0, nY * i ), Point( aOutputSize.Width(), nY * i ) );
- for ( i = n1; i < n2; i++ )
+ for ( i = n1; i <= n2; ++i)
{
- x = ((i-32) % COLUMN_COUNT) * nX;
- y = ((i-32) / COLUMN_COUNT) * nY;
+ Point pix = MapIndexToPixel( i);
+ int x = pix.X();
+ int y = pix.Y();
- if ( c == sal_Unicode(i) && HasFocus() )
+ if ( i == selectedIndex && HasFocus() )
{
const StyleSettings& rStyleSettings =
Application::GetSettings().GetStyleSettings();
@@ -291,22 +378,20 @@ void SvxShowCharSet::DrawChars_Impl( USHORT n1, USHORT n2 )
Color aFillCol = GetFillColor();
SetLineColor();
SetFillColor( rStyleSettings.GetFaceColor() );
- DrawRect( Rectangle( Point( x + 1, y + 1),
- Size( nX - 1, nY - 1 ) ) );
+ DrawRect( Rectangle( Point( x+1, y+1), Size( nX-1, nY-1)));
SetLineColor( rStyleSettings.GetLightColor() );
- DrawLine( Point( x + 1, y + 1 ), Point( x + nX - 1, y + 1 ) );
- DrawLine( Point( x + 1, y + 1 ), Point( x + 1, y + nY - 1 ) );
+ DrawLine( Point( x+1, y+1 ), Point( x+nX-1, y+1));
+ DrawLine( Point( x+1, y+1 ), Point( x+1, y+nY-1));
SetLineColor( rStyleSettings.GetShadowColor() );
- DrawLine( Point( x + 1, y + nY - 1 ),
- Point( x + nX - 1, y + nY - 1 ) );
- DrawLine( Point( x + nX - 1, y + nY - 1 ),
- Point( x + nX - 1, y + 1 ) );
+ DrawLine( Point( x+1, y+nY-1), Point( x+nX-1, y+nY-1));
+ DrawLine( Point( x+nX-1, y+nY-1), Point( x+nX-1, y+1));
SetLineColor( aLineCol );
SetFillColor( aFillCol );
}
+ String aCharStr;
if ( i > 0 )
- aCharStr = String( (sal_Unicode)i );
+ aCharStr = String( MapIndexToUnicode( i) );
else
aCharStr.Erase();
@@ -339,53 +424,122 @@ void SvxShowCharSet::InitSettings( BOOL bForeground, BOOL bBackground )
else
SetBackground( rStyleSettings.GetWindowColor() );
}
+
Invalidate();
}
// -----------------------------------------------------------------------
+sal_Unicode SvxShowCharSet::GetSelectCharacter() const
+{
+ return MapIndexToUnicode( selectedIndex);
+}
+
+// -----------------------------------------------------------------------
+
void SvxShowCharSet::SetFont( const Font& rFont )
{
- Font aFont = rFont;
+ sal_Unicode selectedChar = MapIndexToUnicode( selectedIndex);
+ if( selectedIndex < FirstInView() || selectedIndex > LastInView())
+ selectedChar = MapIndexToUnicode( FirstInView());
- Invalidate();
+ Font aFont = rFont;
aFont.SetWeight( WEIGHT_LIGHT );
aFont.SetSize( Size( 0, 12 ) );
aFont.SetTransparent( TRUE );
Control::SetFont( aFont );
+
+ // hide scrollbar when there is nothing to scroll
+ BOOL needVscroll = (LastInMap()-FirstInMap()+1 > ROW_COUNT*COLUMN_COUNT);
+
+ nX = (origSize.Width() - (needVscroll ? SBWIDTH : 0)) / COLUMN_COUNT;
+ nY = origSize.Height() / ROW_COUNT;
+
+ if( needVscroll) {
+ aVscrollSB.SetPosSizePixel( nX * COLUMN_COUNT, 0, SBWIDTH, nY * ROW_COUNT);
+ int nVisible = ROW_COUNT;
+ int lastRow = (LastInMap() - FirstInMap() + COLUMN_COUNT) / COLUMN_COUNT;
+ aVscrollSB.SetRangeMin( 0);
+ aVscrollSB.SetRangeMax( lastRow);
+ aVscrollSB.SetVisibleSize( nVisible);
+ }
+
+ // rearrange CharSet element in accordance with nX- and nY-multiples
+ Size newSize( nX * COLUMN_COUNT + (needVscroll ? SBWIDTH : 0), nY * ROW_COUNT);
+ Point newPos = origPos + Point( (origSize.Width() - newSize.Width()) / 2, 0);
+ SetPosPixel( newPos);
+ SetOutputSizePixel( newSize);
+
+ int mapIndex = UnicodeToMapIndex( selectedChar);
+ SelectIndex( mapIndex);
+ aVscrollSB.Show( needVscroll);
+
+ Invalidate();
}
// -----------------------------------------------------------------------
-void SvxShowCharSet::SelectCharacter( sal_Unicode cNew, BOOL bFocus )
+void SvxShowCharSet::SelectIndex( int idxNew, BOOL bFocus )
{
- if ( (c == cNew) && !bFocus )
+ if ( (selectedIndex == idxNew) && !bFocus )
return;
- USHORT n = c;
+ if( idxNew<FirstInView()) {
+ // need to scroll up to see selected item
+ int newPos = aVscrollSB.GetThumbPos();
+ newPos -= (FirstInView() - idxNew + COLUMN_COUNT-1) / COLUMN_COUNT;
+ aVscrollSB.SetThumbPos( newPos);
+ selectedIndex = idxNew;
+ Invalidate();
+ }
+ else if( idxNew>LastInView()) {
+ // need to scroll down to see selected item
+ int newPos = aVscrollSB.GetThumbPos();
+ newPos += (idxNew - LastInView() + COLUMN_COUNT) / COLUMN_COUNT;
+ aVscrollSB.SetThumbPos( newPos);
+ selectedIndex = idxNew;
+ Invalidate();
+ } else {
+ // remove highlighted view
+ Color aLineCol = GetLineColor();
+ Color aFillCol = GetFillColor();
+ SetLineColor();
+ SetFillColor( GetBackground().GetColor() );
+
+ Point pixOld = MapIndexToPixel( selectedIndex);
+ pixOld.Move( +1, +1);
+ DrawRect( Rectangle( pixOld, Size( nX-1, nY-1)));
+ SetLineColor( aLineCol );
+ SetFillColor( aFillCol );
+
+ int idxOld = selectedIndex;
+ selectedIndex = idxNew;
+ DrawChars_Impl( idxOld, idxOld );
+ DrawChars_Impl( idxNew, idxNew );
+ }
- // Highlight-Darstellung entfernen
- long x = ((n-32) % COLUMN_COUNT) * nX;
- long y = ((n-32) / COLUMN_COUNT) * nY;
+ aHighHdl.Call( this );
+}
- Color aLineCol = GetLineColor();
- Color aFillCol = GetFillColor();
- SetLineColor();
- SetFillColor( GetBackground().GetColor() );
- DrawRect( Rectangle( Point( x + 1, y + 1), Size( nX - 1, nY - 1 ) ) );
- SetLineColor( aLineCol );
- SetFillColor( aFillCol );
+// -----------------------------------------------------------------------
- c = cNew;
+void SvxShowCharSet::SelectCharacter( sal_Unicode cNew, BOOL bFocus )
+{
+ SelectIndex( UnicodeToMapIndex( cNew), bFocus);
+}
- DrawChars_Impl( n, n+1 );
+// -----------------------------------------------------------------------
- n = c;
- DrawChars_Impl( n, n+1 );
+IMPL_LINK_INLINE_START( SvxShowCharSet, VscrollHdl, ScrollBar *, EMPTYARG )
+{
+ if( selectedIndex < FirstInView() || selectedIndex > LastInView())
+ SelectIndex( FirstInView());
- aHighHdl.Call( this );
+ Invalidate();
+ return 0;
}
+IMPL_LINK_INLINE_END( SvxShowCharSet, VscrollHdl, ScrollBar *, EMPTYARG )
// -----------------------------------------------------------------------
@@ -395,7 +549,7 @@ SvxShowCharSet::~SvxShowCharSet()
// class SvxShowText -----------------------------------------------------
-SvxShowText::SvxShowText(Window* pParent, const ResId& rResId, BOOL bCenter) :
+SvxShowText::SvxShowText( Window* pParent, const ResId& rResId, BOOL bCenter) :
Control( pParent, rResId )
@@ -410,8 +564,7 @@ void SvxShowText::Paint( const Rectangle& )
if ( bCenter )
{
String aText = GetText();
- DrawText( Point( (GetOutputSizePixel().Width() - GetTextWidth(aText)) / 2,
- nY ),
+ DrawText( Point( (GetOutputSizePixel().Width() - GetTextWidth(aText))/2, nY),
aText );
}
else
@@ -456,6 +609,8 @@ SvxCharacterMap::SvxCharacterMap( Window* pParent, BOOL bOne ) :
aShowSet ( this, ResId( CT_SHOWSET ) ),
aFontText ( this, ResId( FT_FONT ) ),
aFontLB ( this, ResId( LB_FONT ) ),
+ aSubsetText ( this, ResId( FT_SUBSET ) ),
+ aSubsetLB ( this, ResId( LB_SUBSET ) ),
aSymbolText ( this, ResId( FT_SYMBOLE ) ),
aShowText ( this, ResId( CT_SHOWTEXT ) ),
aShowChar ( this, ResId( CT_SHOWCHAR ), TRUE ),
@@ -468,7 +623,6 @@ SvxCharacterMap::SvxCharacterMap( Window* pParent, BOOL bOne ) :
{
FreeResource();
- // SystemFont erst mal einstellen
aFont = GetFont();
aFont.SetTransparent( TRUE );
aFont.SetFamily( FAMILY_DONTKNOW );
@@ -502,9 +656,9 @@ SvxCharacterMap::SvxCharacterMap( Window* pParent, BOOL bOne ) :
}
}
FASTBOOL bFound = FALSE;
- // ggf. ist der Name des Fonts in der Liste nicht enthalten ->
- // dann versuchen einen Token des Namens zu selektieren oder sonst
- // den ersten Eintrag.
+ // the font may not be in the list ->
+ // try to find a font name token in list and select found font,
+ // else select topmost entry
if ( aFontLB.GetEntryPos( aDefStr ) == LISTBOX_ENTRY_NOTFOUND )
{
for ( i = 0; i < aDefStr.GetTokenCount(); ++i )
@@ -530,13 +684,14 @@ SvxCharacterMap::SvxCharacterMap( Window* pParent, BOOL bOne ) :
aOKBtn.SetClickHdl( LINK( this, SvxCharacterMap, OKHdl ) );
aFontLB.SetSelectHdl( LINK( this, SvxCharacterMap, FontSelectHdl ) );
+ aSubsetLB.SetSelectHdl( LINK( this, SvxCharacterMap, SubsetSelectHdl ) );
aShowSet.SetDoubleClickHdl( LINK( this, SvxCharacterMap, CharDoubleClickHdl ) );
aShowSet.SetSelectHdl( LINK( this, SvxCharacterMap, CharSelectHdl ) );
aShowSet.SetHighlightHdl( LINK( this, SvxCharacterMap, CharHighlightHdl ) );
aShowSet.SetPreSelectHdl( LINK( this, SvxCharacterMap, CharPreSelectHdl ) );
aDeleteBtn.SetClickHdl( LINK( this, SvxCharacterMap, DeleteHdl ) );
- SetChar( 32 );
+ SetChar( FIRST_UNICODE );
aOKBtn.Disable();
}
@@ -549,11 +704,6 @@ void SvxCharacterMap::SetFont( const Font& rFont )
// -----------------------------------------------------------------------
-/* [Beschreibung]
-
- Diese Methode wird gerufen, um die Font-Auswahl zu disablen.
-*/
-
void SvxCharacterMap::DisableFontSelection()
{
aFontText.Disable();
@@ -576,7 +726,7 @@ void SvxCharacterMap::SetCharFont( const Font& rFont )
aFont = aTmp;
FontSelectHdl( &aFontLB );
- // aus Kompatiblitaetsgruenden noch drin
+ // for compatibility reasons
ModalDialog::SetFont( aFont );
}
@@ -603,9 +753,47 @@ IMPL_LINK( SvxCharacterMap, FontSelectHdl, ListBox *, EMPTYARG )
USHORT nPos = aFontLB.GetSelectEntryPos(),
nFont = (USHORT)(ULONG)aFontLB.GetEntryData( nPos );
aFont = GetDevFont( nFont );
+
+ // notify children using this font
aShowSet.SetFont( aFont );
aShowText.SetFont( aFont );
aShowChar.SetFont( aFont );
+
+ // setup unicode subset listbar with font specific subsets,
+ // hide unicode subset listbar for symbol fonts
+ BOOL bNeedSubset = (aFont.GetCharSet() != RTL_TEXTENCODING_SYMBOL);
+ if( bNeedSubset) {
+ // update subset listbox for new font's unicode subsets
+ const SubsetMap dummyMap; // TODO: font should provide SubsetMap
+ aSubsetLB.Clear();
+ const Subset* s = 0;
+ // TODO: is it worth to improve stupid linear search?
+ for( int i = 0; (s = dummyMap.GetSubsetByIndex( i)) != 0; ++i) {
+ USHORT nPos = aSubsetLB.InsertEntry( s->GetName());
+ aSubsetLB.SetEntryData( nPos, (void*)s );
+ // subset must live at least as long as the selected font !!!
+ if( i == 0)
+ aSubsetLB.SelectEntryPos( nPos);
+ }
+ if( aSubsetLB.GetEntryCount() <= 1)
+ bNeedSubset = FALSE;
+ }
+ aSubsetText.Show( bNeedSubset);
+ aSubsetLB.Show( bNeedSubset);
+
+ return 0;
+}
+
+// -----------------------------------------------------------------------
+
+IMPL_LINK( SvxCharacterMap, SubsetSelectHdl, ListBox *, EMPTYARG )
+{
+ USHORT nPos = aSubsetLB.GetSelectEntryPos();
+ const Subset* s = reinterpret_cast<const Subset*> (aSubsetLB.GetEntryData(nPos));
+ if( s) {
+ sal_Unicode c = s->GetRangeMin();
+ aShowSet.SelectCharacter( c);
+ }
return 0;
}
@@ -644,13 +832,19 @@ IMPL_LINK( SvxCharacterMap, CharSelectHdl, Control *, EMPTYARG )
IMPL_LINK( SvxCharacterMap, CharHighlightHdl, Control *, EMPTYARG )
{
String aTemp;
- sal_Bool bSelect = ( aShowSet.GetSelectCharacter() > 0 );
- if ( bSelect )
- aTemp = String( aShowSet.GetSelectCharacter() );
+ sal_Unicode c = aShowSet.GetSelectCharacter();
+ sal_Bool bSelect = ( c > 0 );
+ if ( bSelect ) {
+ aTemp = String( c );
+ const SubsetMap dummyMap; // TODO: font should provide SubsetMap
+ const Subset* subset = dummyMap.GetSubsetByUnicode( c);
+ if( subset)
+ aSubsetLB.SelectEntry( subset->GetName());
+ }
aShowChar.SetText( aTemp );
aShowChar.Update();
if ( bSelect )
- aTemp = String::CreateFromInt32( (USHORT)aShowSet.GetSelectCharacter() );
+ aTemp = String::CreateFromInt32( (USHORT)c );
aCharCodeText.SetText( aTemp );
return 0;
}
@@ -681,3 +875,156 @@ SvxCharacterMap::~SvxCharacterMap()
}
+// class SubsetMap -------------------------------------------------------
+// TODO: should be moved into Font Attributes stuff
+// we let the it mature here though because it is currently the only use
+
+const const Subset** SubsetMap::allSubsets = 0;
+int SubsetMap::numAllSubsets = 0;
+
+SubsetMap::SubsetMap( /*TODO*/void)
+{
+ if( allSubsets == 0)
+ InitStatics();
+}
+
+SubsetMap::~SubsetMap( void)
+{
+}
+
+const Subset* SubsetMap::GetSubsetByIndex( int index) const
+{
+ if( (index >= 0) && (index < numAllSubsets))
+ return allSubsets[ index];
+ return 0;
+}
+
+const Subset* SubsetMap::GetSubsetByUnicode( sal_Unicode c) const
+{
+ const Subset* s = 0;
+ for( int i = 0; (s = GetSubsetByIndex( i)) != 0; ++i)
+ if( (c >= s->GetRangeMin()) && (c <= s->GetRangeMax()))
+ return s;
+ return 0;
+}
+
+inline Subset::Subset( sal_Unicode _min, sal_Unicode _max, int resId)
+: rangeMin(_min), rangeMax(_max), rangeName( ResId(SVX_RES(resId)))
+{}
+
+void SubsetMap::InitStatics( void)
+{
+ DBG_ASSERT( allSubsets == 0, "Unicode Subset Information double init");
+
+ allSubsets = new const Subset*[ SVXCOUNT_CHARRANGE];
+ int i = 0;
+ // TODO: eventually merge or split unicode subranges
+ // a "native writer" should decide for his subsets
+ allSubsets[ i++] = new Subset( 0x0041, 0x007A, RID_SVXSTR_BASIC_LATIN);
+ allSubsets[ i++] = new Subset( 0x00C0, 0x00FF, RID_SVXSTR_LATIN_1);
+ allSubsets[ i++] = new Subset( 0x0100, 0x017F, RID_SVXSTR_LATIN_EXTENDED_A);
+ allSubsets[ i++] = new Subset( 0x0180, 0x024F, RID_SVXSTR_LATIN_EXTENDED_B);
+ allSubsets[ i++] = new Subset( 0x0250, 0x02AF, RID_SVXSTR_IPA_EXTENSIONS);
+ allSubsets[ i++] = new Subset( 0x02B0, 0x02FF, RID_SVXSTR_SPACING_MODIFIERS);
+ allSubsets[ i++] = new Subset( 0x0300, 0x036F, RID_SVXSTR_COMB_DIACRITICAL);
+ allSubsets[ i++] = new Subset( 0x0370, 0x03FF, RID_SVXSTR_BASIC_GREEK);
+// allSubsets[ i++] = new Subset( 0x03D0, 0x03F3, RID_SVXSTR_GREEK_SYMS_COPTIC);
+ allSubsets[ i++] = new Subset( 0x0400, 0x04FF, RID_SVXSTR_CYRILLIC);
+ allSubsets[ i++] = new Subset( 0x0530, 0x058F, RID_SVXSTR_ARMENIAN);
+ allSubsets[ i++] = new Subset( 0x0590, 0x05FF, RID_SVXSTR_BASIC_HEBREW);
+// allSubsets[ i++] = new Subset( 0x0591, 0x05C4, RID_SVXSTR_HEBREW_EXTENDED);
+ allSubsets[ i++] = new Subset( 0x0600, 0x06FF, RID_SVXSTR_BASIC_ARABIC);
+// allSubsets[ i++] = new Subset( 0x0660, 0x06FF, RID_SVXSTR_ARABIC_EXTENDED);
+ allSubsets[ i++] = new Subset( 0x0700, 0x074F, RID_SVXSTR_SYRIAC);
+ allSubsets[ i++] = new Subset( 0x0780, 0x07BF, RID_SVXSTR_THAANA);
+
+ allSubsets[ i++] = new Subset( 0x0900, 0x097F, RID_SVXSTR_DEVANAGARI);
+ allSubsets[ i++] = new Subset( 0x0980, 0x09FF, RID_SVXSTR_BENGALI);
+ allSubsets[ i++] = new Subset( 0x0A00, 0x0A7F, RID_SVXSTR_GURMUKHI);
+ allSubsets[ i++] = new Subset( 0x0A80, 0x0AFF, RID_SVXSTR_GUJARATI);
+ allSubsets[ i++] = new Subset( 0x0B00, 0x0B7F, RID_SVXSTR_ORIYA);
+ allSubsets[ i++] = new Subset( 0x0B80, 0x0BFF, RID_SVXSTR_TAMIL);
+ allSubsets[ i++] = new Subset( 0x0C00, 0x0C7F, RID_SVXSTR_TELUGU);
+ allSubsets[ i++] = new Subset( 0x0C80, 0x0CFF, RID_SVXSTR_KANNADA);
+ allSubsets[ i++] = new Subset( 0x0D00, 0x0D7F, RID_SVXSTR_MALAYALAM);
+ allSubsets[ i++] = new Subset( 0x0D80, 0x0DFF, RID_SVXSTR_SINHALA);
+ allSubsets[ i++] = new Subset( 0x0E00, 0x0E7F, RID_SVXSTR_THAI);
+ allSubsets[ i++] = new Subset( 0x0E80, 0x0EFF, RID_SVXSTR_LAO);
+ allSubsets[ i++] = new Subset( 0x0F00, 0x0FBF, RID_SVXSTR_TIBETAN);
+ allSubsets[ i++] = new Subset( 0x1000, 0x109F, RID_SVXSTR_MYANMAR);
+ allSubsets[ i++] = new Subset( 0x10A0, 0x10FF, RID_SVXSTR_BASIC_GEORGIAN);
+// allSubsets[ i++] = new Subset( 0x10A0, 0x10C5, RID_SVXSTR_GEORGIAN_EXTENDED);
+
+ allSubsets[ i++] = new Subset( 0x1100, 0x11FF, RID_SVXSTR_HANGUL_JAMO);
+ allSubsets[ i++] = new Subset( 0x1200, 0x137F, RID_SVXSTR_ETHIOPIC);
+ allSubsets[ i++] = new Subset( 0x13A0, 0x13FF, RID_SVXSTR_CHEROKEE);
+ allSubsets[ i++] = new Subset( 0x1400, 0x167F, RID_SVXSTR_CANADIAN_ABORIGINAL);
+ allSubsets[ i++] = new Subset( 0x1680, 0x169F, RID_SVXSTR_OGHAM);
+ allSubsets[ i++] = new Subset( 0x16A0, 0x16F0, RID_SVXSTR_RUNIC);
+
+ allSubsets[ i++] = new Subset( 0x1780, 0x17FF, RID_SVXSTR_KHMER);
+ allSubsets[ i++] = new Subset( 0x1800, 0x18AF, RID_SVXSTR_MONGOLIAN);
+ allSubsets[ i++] = new Subset( 0x1E00, 0x1EFF, RID_SVXSTR_LATIN_EXTENDED_ADDS);
+ allSubsets[ i++] = new Subset( 0x1F00, 0x1FFF, RID_SVXSTR_GREEK_EXTENDED);
+
+ allSubsets[ i++] = new Subset( 0x2000, 0x206F, RID_SVXSTR_GENERAL_PUNCTUATION);
+ allSubsets[ i++] = new Subset( 0x2070, 0x209F, RID_SVXSTR_SUB_SUPER_SCRIPTS);
+ allSubsets[ i++] = new Subset( 0x20A0, 0x20CF, RID_SVXSTR_CURRENCY_SYMBOLS);
+ allSubsets[ i++] = new Subset( 0x20D0, 0x20FF, RID_SVXSTR_COMB_DIACRITIC_SYMS);
+ allSubsets[ i++] = new Subset( 0x2100, 0x214F, RID_SVXSTR_LETTERLIKE_SYMBOLS);
+ allSubsets[ i++] = new Subset( 0x2150, 0x218F, RID_SVXSTR_NUMBER_FORMS);
+ allSubsets[ i++] = new Subset( 0x2190, 0x21FF, RID_SVXSTR_ARROWS);
+ allSubsets[ i++] = new Subset( 0x2200, 0x22FF, RID_SVXSTR_MATH_OPERATORS);
+ allSubsets[ i++] = new Subset( 0x2300, 0x23FF, RID_SVXSTR_MISC_TECHNICAL);
+ allSubsets[ i++] = new Subset( 0x2400, 0x243F, RID_SVXSTR_CONTROL_PICTURES);
+ allSubsets[ i++] = new Subset( 0x2440, 0x245F, RID_SVXSTR_OPTICAL_CHAR_REC);
+ allSubsets[ i++] = new Subset( 0x2460, 0x24FF, RID_SVXSTR_ENCLOSED_ALPHANUM);
+ allSubsets[ i++] = new Subset( 0x2500, 0x257F, RID_SVXSTR_BOX_DRAWING);
+ allSubsets[ i++] = new Subset( 0x2580, 0x259F, RID_SVXSTR_BLOCK_ELEMENTS);
+ allSubsets[ i++] = new Subset( 0x25A0, 0x25FF, RID_SVXSTR_GEOMETRIC_SHAPES);
+ allSubsets[ i++] = new Subset( 0x2600, 0x26FF, RID_SVXSTR_MISC_DINGBATS);
+ allSubsets[ i++] = new Subset( 0x2700, 0x27BF, RID_SVXSTR_DINGBATS);
+
+ allSubsets[ i++] = new Subset( 0x3000, 0x303F, RID_SVXSTR_CJK_SYMS_PUNCTUATION);
+ allSubsets[ i++] = new Subset( 0x3040, 0x309F, RID_SVXSTR_HIRAGANA);
+ allSubsets[ i++] = new Subset( 0x30A0, 0x30FF, RID_SVXSTR_KATAKANA);
+ allSubsets[ i++] = new Subset( 0x3100, 0x312F, RID_SVXSTR_BOPOMOFO);
+ allSubsets[ i++] = new Subset( 0x3130, 0x318F, RID_SVXSTR_HANGUL_COMPAT_JAMO);
+ allSubsets[ i++] = new Subset( 0x3190, 0x31FF, RID_SVXSTR_CJK_MISC);
+ allSubsets[ i++] = new Subset( 0x3200, 0x32FF, RID_SVXSTR_ENCLOSED_CJK_LETTERS);
+ allSubsets[ i++] = new Subset( 0x3300, 0x33FF, RID_SVXSTR_CJK_COMPATIBILITY);
+
+ allSubsets[ i++] = new Subset( 0x3400, 0x4DFF, RID_SVXSTR_CJK_UNIFIED_IDGRAPH_EXT_A);
+ allSubsets[ i++] = new Subset( 0x4E00, 0x9FA5, RID_SVXSTR_CJK_UNIFIED_IDGRAPH);
+ allSubsets[ i++] = new Subset( 0xA000, 0xA4CF, RID_SVXSTR_YI);
+ allSubsets[ i++] = new Subset( 0xAC00, 0xB097, RID_SVXSTR_HANGUL_GA);
+ allSubsets[ i++] = new Subset( 0xB098, 0xB2E3, RID_SVXSTR_HANGUL_NA);
+ allSubsets[ i++] = new Subset( 0xB2E4, 0xB77B, RID_SVXSTR_HANGUL_DA);
+ allSubsets[ i++] = new Subset( 0xB77C, 0xB9C7, RID_SVXSTR_HANGUL_RA);
+ allSubsets[ i++] = new Subset( 0xB9C8, 0xBC13, RID_SVXSTR_HANGUL_MA);
+ allSubsets[ i++] = new Subset( 0xBC14, 0xC0AB, RID_SVXSTR_HANGUL_BA);
+ allSubsets[ i++] = new Subset( 0xC0AC, 0xC543, RID_SVXSTR_HANGUL_SA);
+ allSubsets[ i++] = new Subset( 0xC544, 0xC78F, RID_SVXSTR_HANGUL_AH);
+ allSubsets[ i++] = new Subset( 0xC790, 0xCC27, RID_SVXSTR_HANGUL_JA);
+ allSubsets[ i++] = new Subset( 0xCC28, 0xCE73, RID_SVXSTR_HANGUL_CHA);
+ allSubsets[ i++] = new Subset( 0xCE74, 0xD0BF, RID_SVXSTR_HANGUL_KA);
+ allSubsets[ i++] = new Subset( 0xD0C0, 0xD30B, RID_SVXSTR_HANGUL_TA);
+ allSubsets[ i++] = new Subset( 0xD30C, 0xD557, RID_SVXSTR_HANGUL_PA);
+ allSubsets[ i++] = new Subset( 0xD558, 0xD7A3, RID_SVXSTR_HANGUL_HA);
+// allSubsets[ i++] = new Subset( 0xAC00, 0xD7A3, RID_SVXSTR_HANGUL);
+
+ allSubsets[ i++] = new Subset( 0xE000, 0xF8FF, RID_SVXSTR_PRIVATE_USE_AREA);
+ allSubsets[ i++] = new Subset( 0xF900, 0xFAFF, RID_SVXSTR_CJK_COMPAT_IDGRAPHS);
+ allSubsets[ i++] = new Subset( 0xFB00, 0xFB4F, RID_SVXSTR_ALPHA_PRESENTATION);
+ allSubsets[ i++] = new Subset( 0xFB50, 0xFDFF, RID_SVXSTR_ARABIC_PRESENT_A);
+ allSubsets[ i++] = new Subset( 0xFE20, 0xFE2F, RID_SVXSTR_COMBINING_HALF_MARKS);
+ allSubsets[ i++] = new Subset( 0xFE30, 0xFE4F, RID_SVXSTR_CJK_COMPAT_FORMS);
+ allSubsets[ i++] = new Subset( 0xFE50, 0xFE6F, RID_SVXSTR_SMALL_FORM_VARIANTS);
+ allSubsets[ i++] = new Subset( 0xFE70, 0xFEFF, RID_SVXSTR_ARABIC_PRESENT_B);
+ allSubsets[ i++] = new Subset( 0xFF00, 0xFFEF, RID_SVXSTR_HALFW_FULLW_FORMS);
+ allSubsets[ i++] = new Subset( 0xFFF0, 0xFFFF, RID_SVXSTR_SPECIALS);
+
+ numAllSubsets = i;
+ DBG_ASSERT( (numAllSubsets < SVXCOUNT_CHARRANGE), "SVXCOUNT_CHARRANGE too small");
+ DBG_ASSERT( (2*numAllSubsets > SVXCOUNT_CHARRANGE), "SVXCOUNT_CHARRANGE way to big");
+}
diff --git a/svx/source/dialog/charmap.hrc b/svx/source/dialog/charmap.hrc
index edcb8c0cbe2c..c6db740f979f 100644
--- a/svx/source/dialog/charmap.hrc
+++ b/svx/source/dialog/charmap.hrc
@@ -2,9 +2,9 @@
*
* $RCSfile: charmap.hrc,v $
*
- * $Revision: 1.1.1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: hr $ $Date: 2000-09-18 17:01:07 $
+ * last change: $Author: hdu $ $Date: 2000-10-17 17:13:27 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -42,7 +42,7 @@
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
@@ -74,7 +74,8 @@
#define BTN_CHAR_CANCEL 18
#define BTN_CHAR_HELP 19
#define BTN_DELETE 20
-
+#define FT_SUBSET 30
+#define LB_SUBSET 31
#endif
diff --git a/svx/source/dialog/charmap.src b/svx/source/dialog/charmap.src
index 975e1cbd9c94..02829f3b72d7 100644
--- a/svx/source/dialog/charmap.src
+++ b/svx/source/dialog/charmap.src
@@ -2,9 +2,9 @@
*
* $RCSfile: charmap.src,v $
*
- * $Revision: 1.1.1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: hr $ $Date: 2000-09-18 17:01:07 $
+ * last change: $Author: hdu $ $Date: 2000-10-17 17:13:41 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -136,6 +136,21 @@ ModalDialog RID_SVXDLG_CHARMAP
TabStop = TRUE ;
DropDown = TRUE ;
};
+ FixedText FT_SUBSET
+ {
+ Pos = MAP_APPFONT ( 150 , 8 ) ;
+ Size = MAP_APPFONT ( 28 , 8 ) ;
+ Text = "~Bereich" ;
+ Text [ ENGLISH ] = "~Subset" ;
+ };
+ ListBox LB_SUBSET
+ {
+ Pos = MAP_APPFONT ( 180 , 6 ) ;
+ Size = MAP_APPFONT ( 104 , 68 ) ;
+ Sort = FALSE ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+ };
FixedText FT_SYMBOLE
{
Pos = MAP_APPFONT ( 6 , 127 ) ;
@@ -231,4 +246,491 @@ ModalDialog RID_SVXDLG_CHARMAP
Text[ turkish ] = "zel karakter";
Text[ language_user1 ] = " ";
};
- // ********************************************************************** EOF
+
+/*
+ * strings for unicode range descriptions (used e.g. by charmap)
+ * (see the Unicode Standard & TrueType::OS2.ulUnicodeRange description)
+ */
+
+String RID_SVXSTR_BASIC_LATIN
+{
+ Text = "Basis Latein" ;
+ Text [ ENGLISH ] = "Basic Latin" ;
+};
+String RID_SVXSTR_LATIN_1
+{
+ Text = "Latein-1" ;
+ Text [ ENGLISH ] = "Latin-1" ;
+};
+String RID_SVXSTR_LATIN_EXTENDED_A
+{
+ Text = "Latein Erweitert-A" ;
+ Text [ ENGLISH ] = "Latin Extended-A" ;
+};
+String RID_SVXSTR_LATIN_EXTENDED_B
+{
+ Text = "Latein Erweitert-B" ;
+ Text [ ENGLISH ] = "Latin Extended-B" ;
+};
+String RID_SVXSTR_IPA_EXTENSIONS
+{
+ Text = "Lautschrift Erweiterungen" ;
+ Text [ ENGLISH ] = "IPA Extensions" ;
+};
+String RID_SVXSTR_SPACING_MODIFIERS
+{
+ Text = "Spacing Modifier Zeichen" ;
+ Text [ ENGLISH ] = "Spacing Modifier Letters" ;
+};
+String RID_SVXSTR_COMB_DIACRITICAL
+{
+ Text = "Kombinierende diakritische Zeichen" ;
+ Text [ ENGLISH ] = "Combining Diacritical Marks" ;
+};
+String RID_SVXSTR_BASIC_GREEK
+{
+ Text = "Basis Griechisch" ;
+ Text [ ENGLISH ] = "Basic Greek" ;
+};
+String RID_SVXSTR_GREEK_SYMS_COPTIC
+{
+ Text = "Griechische Symbole und Koptisch" ;
+ Text [ ENGLISH ] = "Greek Symbols And Coptic" ;
+};
+String RID_SVXSTR_CYRILLIC
+{
+ Text = "Kyrillisch" ;
+ Text [ ENGLISH ] = "Cyrillic" ;
+};
+String RID_SVXSTR_ARMENIAN
+{
+ Text = "Armenisch" ;
+ Text [ ENGLISH ] = "Armenian" ;
+};
+String RID_SVXSTR_HEBREW_EXTENDED
+{
+ Text = "Basis Hebrisch" ;
+ Text [ ENGLISH ] = "Basic Hebrew" ;
+};
+String RID_SVXSTR_BASIC_HEBREW
+{
+ Text = "Erweitertes Hebrisch" ;
+ Text [ ENGLISH ] = "Hebrew Extended" ;
+};
+String RID_SVXSTR_BASIC_ARABIC
+{
+ Text = "Basis Arabisch" ;
+ Text [ ENGLISH ] = "Basic Arabic" ;
+};
+String RID_SVXSTR_ARABIC_EXTENDED
+{
+ Text = "Erweitertes Arabisch" ;
+ Text [ ENGLISH ] = "Arabic Extended" ;
+};
+String RID_SVXSTR_DEVANAGARI
+{
+ Text = "Devanagari" ;
+ Text [ ENGLISH ] = "Devanagari" ;
+};
+String RID_SVXSTR_BENGALI
+{
+ Text = "Bengalisch" ;
+ Text [ ENGLISH ] = "Bengali" ;
+};
+String RID_SVXSTR_GURMUKHI
+{
+ Text = "Gurmukhi" ;
+ Text [ ENGLISH ] = "Gurmukhi" ;
+};
+String RID_SVXSTR_GUJARATI
+{
+ Text = "Gujarati" ;
+ Text [ ENGLISH ] = "Gujarati" ;
+};
+String RID_SVXSTR_ORIYA
+{
+ Text = "Oriya" ;
+ Text [ ENGLISH ] = "Oriya" ;
+};
+String RID_SVXSTR_TAMIL
+{
+ Text = "Tamil" ;
+ Text [ ENGLISH ] = "Tamil" ;
+};
+String RID_SVXSTR_TELUGU
+{
+ Text = "Telugu" ;
+ Text [ ENGLISH ] = "Telugu" ;
+};
+String RID_SVXSTR_KANNADA
+{
+ Text = "Kannada" ;
+ Text [ ENGLISH ] = "Kannada" ;
+};
+String RID_SVXSTR_MALAYALAM
+{
+ Text = "Malayisch" ;
+ Text [ ENGLISH ] = "Malayalam" ;
+};
+String RID_SVXSTR_THAI
+{
+ Text = "Thailndisch" ;
+ Text [ ENGLISH ] = "Thai" ;
+};
+String RID_SVXSTR_LAO
+{
+ Text = "Laotisch" ;
+ Text [ ENGLISH ] = "Lao" ;
+};
+String RID_SVXSTR_BASIC_GEORGIAN
+{
+ Text = "Basis Georgisch" ;
+ Text [ ENGLISH ] = "Basic Georgian" ;
+};
+String RID_SVXSTR_GEORGIAN_EXTENDED
+{
+ Text = "Erweitertes Georgisch" ;
+ Text [ ENGLISH ] = "Georgian Extended" ;
+};
+String RID_SVXSTR_HANGUL_JAMO
+{
+ Text = "Hangul Jamo" ;
+ Text [ ENGLISH ] = "Hangul Jamo" ;
+};
+String RID_SVXSTR_LATIN_EXTENDED_ADDS
+{
+ Text = "Latein Erweiterte Zufgungen" ;
+ Text [ ENGLISH ] = "Latin Extended Additional" ;
+};
+String RID_SVXSTR_GREEK_EXTENDED
+{
+ Text = "Erweitertes Griechisch" ;
+ Text [ ENGLISH ] = "Greek Extended" ;
+};
+String RID_SVXSTR_GENERAL_PUNCTUATION
+{
+ Text = "Allgemeine Punktuation" ;
+ Text [ ENGLISH ] = "General Punctuation" ;
+};
+String RID_SVXSTR_SUB_SUPER_SCRIPTS
+{
+ Text = "Hoch- und Tiefstellungen" ;
+ Text [ ENGLISH ] = "Superscripts And Subscripts" ;
+};
+String RID_SVXSTR_CURRENCY_SYMBOLS
+{
+ Text = "Whrungssymbole" ;
+ Text [ ENGLISH ] = "Currency Symbols" ;
+};
+String RID_SVXSTR_COMB_DIACRITIC_SYMS
+{
+ Text = "Kombinierende diakritische Symbole" ;
+ Text [ ENGLISH ] = "Combining Diacritical Marks For Symbols" ;
+};
+String RID_SVXSTR_LETTERLIKE_SYMBOLS
+{
+ Text = "Buchstabenhnliche Symbole" ;
+ Text [ ENGLISH ] = "Letterlike Symbols" ;
+};
+String RID_SVXSTR_NUMBER_FORMS
+{
+ Text = "Zahlensymbole" ;
+ Text [ ENGLISH ] = "Number Forms" ;
+};
+String RID_SVXSTR_ARROWS
+{
+ Text = "Pfeilsymbole" ;
+ Text [ ENGLISH ] = "Arrows" ;
+};
+String RID_SVXSTR_MATH_OPERATORS
+{
+ Text = "Mathematische Operatoren" ;
+ Text [ ENGLISH ] = "Mathematical Operators" ;
+};
+String RID_SVXSTR_MISC_TECHNICAL
+{
+ Text = "Verschiedene Technische Zeichen" ;
+ Text [ ENGLISH ] = "Miscellaneous Technical" ;
+};
+String RID_SVXSTR_CONTROL_PICTURES
+{
+ Text = "Tastatursymbole" ;
+ Text [ ENGLISH ] = "Control Pictures" ;
+};
+String RID_SVXSTR_OPTICAL_CHAR_REC
+{
+ Text = "Maschinenlesbare Zeichen" ;
+ Text [ ENGLISH ] = "Optical Character Recognition" ;
+};
+String RID_SVXSTR_ENCLOSED_ALPHANUM
+{
+ Text = "Eingekreiste Zeichen" ;
+ Text [ ENGLISH ] = "Enclosed Alphanumerics" ;
+};
+String RID_SVXSTR_BOX_DRAWING
+{
+ Text = "Rahmungssymbole" ;
+ Text [ ENGLISH ] = "Box Drawing" ;
+};
+String RID_SVXSTR_BLOCK_ELEMENTS
+{
+ Text = "Blocksymbole" ;
+ Text [ ENGLISH ] = "Block Elements" ;
+};
+String RID_SVXSTR_GEOMETRIC_SHAPES
+{
+ Text = "Geometrische Symbole" ;
+ Text [ ENGLISH ] = "Geometric Shapes" ;
+};
+String RID_SVXSTR_MISC_DINGBATS
+{
+ Text = "Verschiedene Symbole" ;
+ Text [ ENGLISH ] = "Miscellaneous Symbols" ;
+};
+String RID_SVXSTR_DINGBATS
+{
+ Text = "Dingbats" ;
+ Text [ ENGLISH ] = "Dingbats" ;
+};
+String RID_SVXSTR_CJK_SYMS_PUNCTUATION
+{
+ Text = "CJK Symbole und Punktuation" ;
+ Text [ ENGLISH ] = "CJK Symbols And Punctuation" ;
+};
+String RID_SVXSTR_HIRAGANA
+{
+ Text = "Hiragana" ;
+ Text [ ENGLISH ] = "Hiragana" ;
+};
+String RID_SVXSTR_KATAKANA
+{
+ Text = "Katakana" ;
+ Text [ ENGLISH ] = "Katakana" ;
+};
+String RID_SVXSTR_BOPOMOFO
+{
+ Text = "Bopomofo" ;
+ Text [ ENGLISH ] = "Bopomofo" ;
+};
+String RID_SVXSTR_HANGUL_COMPAT_JAMO
+{
+ Text = "Hangul kompatibles Jamo" ;
+ Text [ ENGLISH ] = "Hangul Compatibility Jamo" ;
+};
+String RID_SVXSTR_CJK_MISC
+{
+ Text = "Verschiedene CJK Zeichen" ;
+ Text [ ENGLISH ] = "CJK Miscellaneous" ;
+};
+String RID_SVXSTR_ENCLOSED_CJK_LETTERS
+{
+ Text = "Eingekreiste CJK Zeichen und Monate" ;
+ Text [ ENGLISH ] = "Enclosed CJK Letters And Months" ;
+};
+String RID_SVXSTR_CJK_COMPATIBILITY
+{
+ Text = "CJK Kompatibilitt" ;
+ Text [ ENGLISH ] = "CJK Compatibility" ;
+};
+String RID_SVXSTR_HANGUL
+{
+ Text = "Hangul" ;
+ Text [ ENGLISH ] = "Hangul" ;
+};
+String RID_SVXSTR_CJK_UNIFIED_IDGRAPH
+{
+ Text = "Vereinheitlichte CJK-Ideogramme" ;
+ Text [ ENGLISH ] = "CJK Unified Ideographs" ;
+};
+String RID_SVXSTR_CJK_UNIFIED_IDGRAPH_EXT_A
+{
+ Text = "Vereinheitlichte CJK-Ideogramm Erweiterung-A" ;
+ Text [ ENGLISH ] = "CJK Unified Ideographs Extension-A" ;
+};
+String RID_SVXSTR_PRIVATE_USE_AREA
+{
+ Text = "Zeichensatzspezifische Symbole" ;
+ Text [ ENGLISH ] = "Private Use Area" ;
+};
+String RID_SVXSTR_CJK_COMPAT_IDGRAPHS
+{
+ Text = "CJK Kompatible Ideogramme" ;
+ Text [ ENGLISH ] = "CJK Compatibility Ideographs" ;
+};
+String RID_SVXSTR_ALPHA_PRESENTATION
+{
+ Text = "Alphabetische Prsentations Formen" ;
+ Text [ ENGLISH ] = "Alphabetic Presentation Forms" ;
+};
+String RID_SVXSTR_ARABIC_PRESENT_A
+{
+ Text = "Arabische Prsentations Formen-A" ;
+ Text [ ENGLISH ] = "Arabic Presentation Forms-A" ;
+};
+String RID_SVXSTR_COMBINING_HALF_MARKS
+{
+ Text = "Kombinierende Halbmarken" ;
+ Text [ ENGLISH ] = "Combining Half Marks" ;
+};
+String RID_SVXSTR_CJK_COMPAT_FORMS
+{
+ Text = "CJK Kompatibilitts-Formen" ;
+ Text [ ENGLISH ] = "CJK Compatibility Forms" ;
+};
+String RID_SVXSTR_SMALL_FORM_VARIANTS
+{
+ Text = "Kleine Form Varianten" ;
+ Text [ ENGLISH ] = "Small Form Variants" ;
+};
+String RID_SVXSTR_ARABIC_PRESENT_B
+{
+ Text = "Arabische Prsentationsformen-B" ;
+ Text [ ENGLISH ] = "Arabic Presentation Forms-B" ;
+};
+String RID_SVXSTR_HALFW_FULLW_FORMS
+{
+ Text = "Halbbreite und breite Formen" ;
+ Text [ ENGLISH ] = "Halfwidth And Fullwidth Forms" ;
+};
+String RID_SVXSTR_SPECIALS
+{
+ Text = "Spezielle Symbole" ;
+ Text [ ENGLISH ] = "Specials" ;
+};
+String RID_SVXSTR_HANGUL_GA
+{
+ Text = "Hangul Ga" ;
+ Text [ ENGLISH ] = "Hangul Ga";
+};
+String RID_SVXSTR_HANGUL_NA
+{
+ Text = "Hangul Na" ;
+ Text [ ENGLISH ] = "Hangul Na" ;
+};
+String RID_SVXSTR_HANGUL_DA
+{
+ Text = "Hangul Da" ;
+ Text [ ENGLISH ] = "Hangul Da" ;
+};
+String RID_SVXSTR_HANGUL_RA
+{
+ Text = "Hangul Ra" ;
+ Text [ ENGLISH ] = "Hangul Ra" ;
+};
+String RID_SVXSTR_HANGUL_MA
+{
+ Text = "Hangul Ma" ;
+ Text [ ENGLISH ] = "Hangul Ma" ;
+};
+String RID_SVXSTR_HANGUL_BA
+{
+ Text = "Hangul Ba" ;
+ Text [ ENGLISH ] = "Hangul Ba" ;
+};
+String RID_SVXSTR_HANGUL_SA
+{
+ Text = "Hangul Sa" ;
+ Text [ ENGLISH ] = "Hangul Sa" ;
+};
+String RID_SVXSTR_HANGUL_AH
+{
+ Text = "Hangul Ah" ;
+ Text [ ENGLISH ] = "Hangul Ah" ;
+};
+String RID_SVXSTR_HANGUL_JA
+{
+ Text = "Hangul Ja" ;
+ Text [ ENGLISH ] = "Hangul Ja" ;
+};
+String RID_SVXSTR_HANGUL_CHA
+{
+ Text = "Hangul Cha" ;
+ Text [ ENGLISH ] = "Hangul Cha" ;
+};
+String RID_SVXSTR_HANGUL_KA
+{
+ Text = "Hangul Ka" ;
+ Text [ ENGLISH ] = "Hangul Ka" ;
+};
+String RID_SVXSTR_HANGUL_TA
+{
+ Text = "Hangul Ta" ;
+ Text [ ENGLISH ] = "Hangul Ta" ;
+};
+String RID_SVXSTR_HANGUL_PA
+{
+ Text = "Hangul Pa" ;
+ Text [ ENGLISH ] = "Hangul Pa" ;
+};
+String RID_SVXSTR_HANGUL_HA
+{
+ Text = "Hangul Ha" ;
+ Text [ ENGLISH ] = "Hangul Ha" ;
+};
+String RID_SVXSTR_YI
+{
+ Text = "Yi" ;
+ Text [ ENGLISH ] = "Yi" ;
+};
+String RID_SVXSTR_SINHALA
+{
+ Text = "Sinhala" ;
+ Text [ ENGLISH ] = "Sinhala" ;
+};
+String RID_SVXSTR_TIBETAN
+{
+ Text = "Tibetisch" ;
+ Text [ ENGLISH ] = "Tibetan" ;
+};
+String RID_SVXSTR_MYANMAR
+{
+ Text = "Myanmar" ;
+ Text [ ENGLISH ] = "Myanmar" ;
+};
+String RID_SVXSTR_KHMER
+{
+ Text = "Khmer" ;
+ Text [ ENGLISH ] = "Khmer" ;
+};
+String RID_SVXSTR_OGHAM
+{
+ Text = "Ogham" ;
+ Text [ ENGLISH ] = "Ogham" ;
+};
+String RID_SVXSTR_RUNIC
+{
+ Text = "Runen" ;
+ Text [ ENGLISH ] = "Runic" ;
+};
+String RID_SVXSTR_SYRIAC
+{
+ Text = "Syrisch" ;
+ Text [ ENGLISH ] = "Syriac" ;
+};
+String RID_SVXSTR_THAANA
+{
+ Text = "Thaana" ;
+ Text [ ENGLISH ] = "Thaana" ;
+};
+String RID_SVXSTR_ETHIOPIC
+{
+ Text = "thiopisch" ;
+ Text [ ENGLISH ] = "Ethiopic" ;
+};
+String RID_SVXSTR_CHEROKEE
+{
+ Text = "Cherokee" ;
+ Text [ ENGLISH ] = "Cherokee" ;
+};
+String RID_SVXSTR_CANADIAN_ABORIGINAL
+{
+ Text = "Kanadische Aborigin Silben" ;
+ Text [ ENGLISH ] = "Canadian Aboriginal Syllables" ;
+};
+String RID_SVXSTR_MONGOLIAN
+{
+ Text = "Mongolisch" ;
+ Text [ ENGLISH ] = "Mongolian" ;
+};
+
+// ********************************************************************** EOF