/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/


 // include ---------------------------------------------------------------
#include "helpid.hrc"
#include <cuires.hrc>
#include "chardlg.hrc"
#include "chardlg.h"
#include <svx/dialogs.hrc>

// RID_SVXPAGE_CHAR_NAME ----------------------------------------------------

TabPage RID_SVXPAGE_CHAR_NAME
{
	HelpId = HID_SVXPAGE_CHAR_NAME ;
	Size = MAP_APPFONT ( 260 , 185 ) ;
	Hide = TRUE ;
	FixedLine FL_WEST
	{
        Pos = MAP_APPFONT ( 6 , 3  );
        Size = MAP_APPFONT ( 248 , 8 );
		Text [ en-US ] = "Western text font";
	};
	FixedText FT_WEST_NAME
	{
        Pos = MAP_APPFONT ( 12 , 14 );
        Size = MAP_APPFONT ( 80 , 8 );
        Text [ en-US ] = "Font";
	};
    FixedText FT_WEST_NAME_NOCJK
	{
        Pos = MAP_APPFONT ( 12 , 6 );
        Size = MAP_APPFONT ( 112 , 8 );
		Text [ en-US ] = "~Font";
	};
	ComboBox LB_WEST_NAME
	{
	    HelpID = "cui:ComboBox:RID_SVXPAGE_CHAR_NAME:LB_WEST_NAME";
		Border = TRUE;
        Pos = MAP_APPFONT ( 12 , 25 );
        Size = MAP_APPFONT ( 80 , 72 );
		TabStop = TRUE;
		DropDown = TRUE;
	};
    ComboBox LB_WEST_NAME_NOCJK
	{
        HelpID = "cui:ComboBox:RID_SVXPAGE_CHAR_NAME:LB_WEST_NAME_NOCJK";
		Border = TRUE;
        Pos = MAP_APPFONT ( 12 , 17 );
        Size = MAP_APPFONT ( 112 , 71 );
		TabStop = TRUE;
        DropDown = FALSE;
	};
	FixedText FT_WEST_STYLE
	{
        Pos = MAP_APPFONT ( 96 , 14 );
        Size = MAP_APPFONT ( 40 , 8 );
		Text [ en-US ] = "~Typeface";
	};
    FixedText FT_WEST_STYLE_NOCJK
	{
        Pos = MAP_APPFONT ( 130 , 6 );
        Size = MAP_APPFONT ( 72 , 8 );
		Text [ en-US ] = "~Typeface";
	};
	ComboBox LB_WEST_STYLE
	{
	    HelpID = "cui:ComboBox:RID_SVXPAGE_CHAR_NAME:LB_WEST_STYLE";
		Border = TRUE;
        Pos = MAP_APPFONT ( 96 , 25 );
        Size = MAP_APPFONT ( 40 , 48 );
		TabStop = TRUE;
		DropDown = TRUE;
		StringList [ en-US ] =
		{
			"Normal" ;
			"Italic" ;
			"Bold" ;
			"Bold italic" ;
		};
	};
    ComboBox LB_WEST_STYLE_NOCJK
	{
        HelpID = "cui:ComboBox:RID_SVXPAGE_CHAR_NAME:LB_WEST_STYLE_NOCJK";
		Border = TRUE;
        Pos = MAP_APPFONT ( 130 , 17 );
        Size = MAP_APPFONT ( 72 , 71 );
		TabStop = TRUE;
        DropDown = FALSE;
		StringList [ en-US ] =
		{
			"Normal" ;
			"Italic" ;
			"Bold" ;
			"Bold italic" ;
		};
	};
	FixedText FT_WEST_SIZE
	{
        Pos = MAP_APPFONT ( 140 , 14 );
        Size = MAP_APPFONT ( 38 , 8 );
        Text [ en-US ] = "Size";
	};
    FixedText FT_WEST_SIZE_NOCJK
	{
        Pos = MAP_APPFONT ( 208 , 6 );
        Size = MAP_APPFONT ( 40 , 8 );
        Text [ en-US ] = "Size";
	};
	MetricBox LB_WEST_SIZE
	{
	    HelpID = "cui:MetricBox:RID_SVXPAGE_CHAR_NAME:LB_WEST_SIZE";
		Border = TRUE;
        Pos = MAP_APPFONT ( 140 , 25 );
        Size = MAP_APPFONT ( 38 , 72 );
		TabStop = TRUE;
		DropDown = TRUE;
	};
    MetricBox LB_WEST_SIZE_NOCJK
	{
        HelpID = "cui:MetricBox:RID_SVXPAGE_CHAR_NAME:LB_WEST_SIZE_NOCJK";
		Border = TRUE;
        Pos = MAP_APPFONT ( 208 , 17 );
        Size = MAP_APPFONT ( 40 , 71 );
		TabStop = TRUE;
        DropDown = FALSE;
	};
	FixedText FT_WEST_LANG
	{
        Pos = MAP_APPFONT ( 182 , 14 );
        Size = MAP_APPFONT ( 66 , 8 );
        Text [ en-US ] = "Language";
	};
    FixedText FT_WEST_LANG_NOCJK
	{
        Pos = MAP_APPFONT ( 130 , 94 );
        Size = MAP_APPFONT ( 72 , 8 );
		Text [ en-US ] = "~Language";
	};
	ListBox LB_WEST_LANG
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_NAME:LB_WEST_LANG";
		Border = TRUE;
        Pos = MAP_APPFONT ( 182 , 25 );
        Size = MAP_APPFONT ( 66 , 72 );
		TabStop = TRUE;
		Sort = TRUE ;
		DropDown = TRUE;
	};
    ListBox LB_WEST_LANG_NOCJK
	{
        HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_NAME:LB_WEST_LANG_NOCJK";
		Border = TRUE;
        Pos = MAP_APPFONT ( 130 , 105 );
        Size = MAP_APPFONT ( 72 , 72 );
		TabStop = TRUE;
		Sort = TRUE ;
		DropDown = TRUE;
	};
	FixedLine FL_EAST
	{
        Pos = MAP_APPFONT ( 6 , 43 );
        Size = MAP_APPFONT ( 248 , 8 );
		Text [ en-US ] = "Asian text font";
	};
	FixedText FT_EAST_NAME
	{
        Pos = MAP_APPFONT ( 12 , 54 );
        Size = MAP_APPFONT ( 80 , 8 );
        Text [ en-US ] = "Font";
	};
	ComboBox LB_EAST_NAME
	{
	    HelpID = "cui:ComboBox:RID_SVXPAGE_CHAR_NAME:LB_EAST_NAME";
		Border = TRUE;
        Pos = MAP_APPFONT ( 12 , 65 );
        Size = MAP_APPFONT ( 80 , 72 );
		TabStop = TRUE;
		DropDown = TRUE;
	};
	FixedText FT_EAST_STYLE
	{
        Pos = MAP_APPFONT ( 96 , 54 );
        Size = MAP_APPFONT ( 40 , 8 );
		Text [ en-US ] = "T~ypeface";
	};
	ComboBox LB_EAST_STYLE
	{
	    HelpID = "cui:ComboBox:RID_SVXPAGE_CHAR_NAME:LB_EAST_STYLE";
		Border = TRUE;
        Pos = MAP_APPFONT ( 96 , 65 );
        Size = MAP_APPFONT ( 40 , 48 );
		TabStop = TRUE;
		DropDown = TRUE;
		StringList [ en-US ] =
		{
			"Normal" ;
			"Italic" ;
			"Bold" ;
			"Bold italic" ;
		};
	};
	FixedText FT_EAST_SIZE
	{
        Pos = MAP_APPFONT ( 140 , 54  );
        Size = MAP_APPFONT ( 38 , 8 );
        Text [ en-US ] = "Size";
	};
	MetricBox LB_EAST_SIZE
	{
	    HelpID = "cui:MetricBox:RID_SVXPAGE_CHAR_NAME:LB_EAST_SIZE";
		Border = TRUE;
        Pos = MAP_APPFONT ( 140 , 65 );
        Size = MAP_APPFONT ( 38 , 72 );
		TabStop = TRUE;
		DropDown = TRUE;
	};
	FixedText FT_EAST_LANG
	{
        Pos = MAP_APPFONT ( 182 , 54 );
        Size = MAP_APPFONT ( 66 , 8 );
        Text [ en-US ] = "Language";
	};
	ListBox LB_EAST_LANG
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_NAME:LB_EAST_LANG";
		Border = TRUE;
        Pos = MAP_APPFONT ( 182 , 65 );
        Size = MAP_APPFONT ( 66 , 72 );
		TabStop = TRUE;
		Sort = TRUE ;
		DropDown = TRUE;
	};
	FixedLine FL_CTL
	{
        Pos = MAP_APPFONT ( 6 , 83 );
        Size = MAP_APPFONT ( 248 , 8 );
		Text [ en-US ] = "CTL font";
	};
	FixedText FT_CTL_NAME
	{
        Pos = MAP_APPFONT ( 12 , 94 );
        Size = MAP_APPFONT ( 80 , 8 );
        Text [ en-US ] = "Font";
	};
	ComboBox LB_CTL_NAME
	{
	    HelpID = "cui:ComboBox:RID_SVXPAGE_CHAR_NAME:LB_CTL_NAME";
		Border = TRUE;
        Pos = MAP_APPFONT ( 12 , 105 );
        Size = MAP_APPFONT ( 80 , 72 );
		TabStop = TRUE;
		DropDown = TRUE;
	};
	FixedText FT_CTL_STYLE
	{
        Pos = MAP_APPFONT ( 96 , 94 );
        Size = MAP_APPFONT ( 40 , 8 );
        Text [ en-US ] = "Ty~peface";
	};
	ComboBox LB_CTL_STYLE
	{
	    HelpID = "cui:ComboBox:RID_SVXPAGE_CHAR_NAME:LB_CTL_STYLE";
		Border = TRUE;
        Pos = MAP_APPFONT ( 96 , 105 );
        Size = MAP_APPFONT ( 40 , 48 );
		TabStop = TRUE;
		DropDown = TRUE;
		StringList [ en-US ] =
		{
			"Normal" ;
			"Italic" ;
			"Bold" ;
			"Bold italic" ;
		};
	};
	FixedText FT_CTL_SIZE
	{
        Pos = MAP_APPFONT ( 140 , 94  );
        Size = MAP_APPFONT ( 38 , 8 );
        Text [ en-US ] = "Size";
	};
	MetricBox LB_CTL_SIZE
	{
	    HelpID = "cui:MetricBox:RID_SVXPAGE_CHAR_NAME:LB_CTL_SIZE";
		Border = TRUE;
        Pos = MAP_APPFONT ( 140 , 105 );
        Size = MAP_APPFONT ( 38 , 72 );
		TabStop = TRUE;
		DropDown = TRUE;
	};
	FixedText FT_CTL_LANG
	{
        Pos = MAP_APPFONT ( 182 , 94 );
        Size = MAP_APPFONT ( 66 , 8 );
        Text [ en-US ] = "Language";
	};
	ListBox LB_CTL_LANG
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_NAME:LB_CTL_LANG";
		Border = TRUE;
        Pos = MAP_APPFONT ( 182 , 105 );
        Size = MAP_APPFONT ( 66 , 72 );
		TabStop = TRUE;
		Sort = TRUE ;
		DropDown = TRUE;
	};
	Window WIN_CHAR_PREVIEW
	{
        Border = TRUE ;
        Pos = MAP_APPFONT ( 6 , 149 ) ;
        Size = MAP_APPFONT ( 248 , 37 ) ;
		Text [ en-US ] = "Example";
	};
	FixedText FT_CHAR_FONTTYPE
	{
        Pos = MAP_APPFONT ( 6 , 129 ) ;
        Size = MAP_APPFONT ( 248 , 16 ) ;
        WordBreak = TRUE ;
	};
    FixedLine FL_COLOR2
    {
        Pos = MAP_APPFONT ( 6 , 83 ) ;
        Size = MAP_APPFONT ( 248 , 8 ) ;
        Text [ en-US ] = "Color" ;
	};
    FixedText FT_COLOR2
	{
        Pos = MAP_APPFONT ( 12 , 94 );
        Size = MAP_APPFONT ( 58 , 8 );
        Text [ en-US ] = "Font ~color" ;
	};
	ListBox LB_COLOR2
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_NAME:LB_COLOR2";
		Border = TRUE;
        Pos = MAP_APPFONT ( 12 , 105 );
        Size = MAP_APPFONT ( 58 , 100 );
		TabStop = TRUE;
		DropDown = TRUE;
	};
	String STR_CHARNAME_NOSTYLE
	{
		Text [ en-US ] = "No %1";
	};
	String STR_CHARNAME_TRANSPARENT
	{
		Text [ en-US ] = "Transparent";
	};
};

// RID_SVXPAGE_CHAR_EFFECTS ---------------------------------------------------

TabPage RID_SVXPAGE_CHAR_EFFECTS
{
	HelpId = HID_SVXPAGE_CHAR_EFFECTS ;
	Size = MAP_APPFONT ( 260 , 185 ) ;
	Hide = TRUE ;
    FixedText FT_FONTCOLOR
    {
        Pos = MAP_APPFONT ( 10 , 4 );
        Size = MAP_APPFONT ( 82 , 8 );
        Text [ en-US ] = "Font ~color" ;
	};
	ListBox LB_FONTCOLOR
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_FONTCOLOR";
		Border = TRUE;
        Pos = MAP_APPFONT ( 10 , 15 );
        Size = MAP_APPFONT ( 82 , 72 );
		TabStop = TRUE;
		DropDown = TRUE;
	};
	FixedText FT_EFFECTS
	{
        Pos = MAP_APPFONT( 10 , 33 );
        Size = MAP_APPFONT( 82 , 8 );
        Text [ en-US ] = "~Effects" ;
	};
	ListBox LB_EFFECTS2
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_EFFECTS2";
        Pos = MAP_APPFONT ( 10 , 44 ) ;
        Size = MAP_APPFONT ( 82 , 56 ) ;
		DropDown = TRUE;
		StringList [ en-US ] =
		{
            < "(Without)" ; Default ; > ;
			< "Capitals" ; Default ; > ;
			< "Lowercase" ; Default ; > ;
			< "Title" ; Default ; > ;
			< "Small capitals" ; Default ; > ;
		};
	};
    FixedText FT_RELIEF
    {
        Pos = MAP_APPFONT ( 10 , 62 );
        Size = MAP_APPFONT ( 82 , 8 );
    	Text [ en-US ] = "~Relief";
	};
    ListBox LB_RELIEF
    {
        HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_RELIEF";
        Pos = MAP_APPFONT ( 10 , 73 ) ;
        Size = MAP_APPFONT ( 82 , 56 ) ;
		DropDown = TRUE;
        StringList [ en-US ] =
        {
            < "(Without)" ; Default ; > ;
            < "Embossed" ; Default ; > ;
            < "Engraved" ; Default ; > ;
        };
	};
    TriStateBox CB_OUTLINE
	{
        HelpID = "cui:TriStateBox:RID_SVXPAGE_CHAR_EFFECTS:CB_OUTLINE";
        Pos = MAP_APPFONT ( 10 , 93 ) ;
        Size = MAP_APPFONT ( 82 , 10 ) ;
        Text [ en-US ] = "Out~line" ;
	};
	TriStateBox CB_SHADOW
	{
	    HelpID = "cui:TriStateBox:RID_SVXPAGE_CHAR_EFFECTS:CB_SHADOW";
        Pos = MAP_APPFONT ( 10 , 107 ) ;
        Size = MAP_APPFONT ( 82 , 10 ) ;
        Text [ en-US ] = "Sha~dow" ;
	};
	TriStateBox CB_BLINKING
	{
	    HelpID = "cui:TriStateBox:RID_SVXPAGE_CHAR_EFFECTS:CB_BLINKING";
        Pos = MAP_APPFONT ( 10 , 121 ) ;
        Size = MAP_APPFONT ( 82 , 10 ) ;
		Hide = TRUE;
		Text [ en-US ] = "~Blinking" ;
	};
    TriStateBox CB_CHARHIDDEN
    {
        HelpID = "cui:TriStateBox:RID_SVXPAGE_CHAR_EFFECTS:CB_CHARHIDDEN";
        Pos = MAP_APPFONT ( 10 , 135 ) ;
        Size = MAP_APPFONT ( 82 , 10 ) ;
        Text [ en-US ] = "H~idden" ;
    };
    FixedLine FL_EFFECTS_VERTICAL
	{
        Pos = MAP_APPFONT ( 100 , 4 ) ;
        Size = MAP_APPFONT ( 4 , 142 ) ;
        Vert = TRUE;
	};
	FixedText FT_OVERLINE
	{
        Pos = MAP_APPFONT( 110 , 4 );
        Size = MAP_APPFONT( 68 , 8 );
        Text [ en-US ] = "~Overlining" ;
	};
	ListBox LB_OVERLINE
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_OVERLINE";
		Border = TRUE;
        Pos = MAP_APPFONT ( 110 , 15 );
        Size = MAP_APPFONT ( 68 , 72 );
		TabStop = TRUE;
		DropDown = TRUE;
		StringList [ en-US ] =
		{
			< "(Without)" ; CHRDLG_UNDERLINE_NONE ; > ;
			< "Single" ; CHRDLG_UNDERLINE_SINGLE ; > ;
			< "Double" ; CHRDLG_UNDERLINE_DOUBLE ; > ;
			< "Bold"; CHRDLG_UNDERLINE_BOLD; > ;
			< "Dotted" ; CHRDLG_UNDERLINE_DOTTED ; > ;
			< "Dotted (Bold)" ; CHRDLG_UNDERLINE_BOLDDOTTED; > ;
			< "Dash"; CHRDLG_UNDERLINE_DASH; > ;
			< "Dash (Bold)"; CHRDLG_UNDERLINE_BOLDDASH; > ;
			< "Long Dash"; CHRDLG_UNDERLINE_LONGDASH; > ;
			< "Long Dash (Bold)"; CHRDLG_UNDERLINE_BOLDLONGDASH; > ;
			< "Dot Dash"; CHRDLG_UNDERLINE_DASHDOT; > ;
			< "Dot Dash (Bold)"; CHRDLG_UNDERLINE_BOLDDASHDOT; > ;
			< "Dot Dot Dash"; CHRDLG_UNDERLINE_DASHDOTDOT; > ;
			< "Dot Dot Dash (Bold)"; CHRDLG_UNDERLINE_BOLDDASHDOTDOT; > ;
			< "Wave"; CHRDLG_UNDERLINE_WAVE; > ;
			< "Wave (Bold)"; CHRDLG_UNDERLINE_BOLDWAVE; > ;
			< "Double Wave"; CHRDLG_UNDERLINE_DOUBLEWAVE; > ;
		};
	};
	FixedText FT_OVERLINE_COLOR
	{
        Pos = MAP_APPFONT ( 184 , 4 );
        Size = MAP_APPFONT ( 68 , 8 );
        Text [ en-US ] = "O~verline color";
	};
	ListBox LB_OVERLINE_COLOR
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_OVERLINE_COLOR";
		Border = TRUE;
        Pos = MAP_APPFONT ( 184 , 15 );
        Size = MAP_APPFONT ( 68 , 100 );
		TabStop = TRUE;
		DropDown = TRUE;
	};
	FixedText FT_STRIKEOUT
	{
        Pos = MAP_APPFONT ( 110 , 33 );
        Size = MAP_APPFONT ( 68 , 8 );
        Text [ en-US ] = "~Strikethrough" ;
	};
	ListBox LB_STRIKEOUT
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_STRIKEOUT";
		Border = TRUE;
        Pos = MAP_APPFONT ( 110 , 44 );
        Size = MAP_APPFONT ( 68 , 72 );
		TabStop = TRUE;
		DropDown = TRUE;
		StringList [ en-US ] =
		{
			< "(Without)" ; CHRDLG_STRIKEOUT_NONE ; > ;
			< "Single" ; CHRDLG_STRIKEOUT_SINGLE ; > ;
			< "Double" ; CHRDLG_STRIKEOUT_DOUBLE ; > ;
			< "Bold" ; CHRDLG_STRIKEOUT_BOLD ; > ;
			< "With /" ; CHRDLG_STRIKEOUT_SLASH ; > ;
			< "With X" ; CHRDLG_STRIKEOUT_X ; > ;
		};
	};
	FixedText FT_UNDERLINE
	{
        Pos = MAP_APPFONT( 110 , 62 );
        Size = MAP_APPFONT( 68 , 8 );
        Text [ en-US ] = "~Underlining" ;
	};
	ListBox LB_UNDERLINE
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_UNDERLINE";
		Border = TRUE;
        Pos = MAP_APPFONT ( 110 , 73 );
        Size = MAP_APPFONT ( 68 , 72 );
		TabStop = TRUE;
		DropDown = TRUE;
		StringList [ en-US ] =
		{
			< "(Without)" ; CHRDLG_UNDERLINE_NONE ; > ;
			< "Single" ; CHRDLG_UNDERLINE_SINGLE ; > ;
			< "Double" ; CHRDLG_UNDERLINE_DOUBLE ; > ;
			< "Bold"; CHRDLG_UNDERLINE_BOLD; > ;
			< "Dotted" ; CHRDLG_UNDERLINE_DOTTED ; > ;
			< "Dotted (Bold)" ; CHRDLG_UNDERLINE_BOLDDOTTED; > ;
			< "Dash"; CHRDLG_UNDERLINE_DASH; > ;
			< "Dash (Bold)"; CHRDLG_UNDERLINE_BOLDDASH; > ;
			< "Long Dash"; CHRDLG_UNDERLINE_LONGDASH; > ;
			< "Long Dash (Bold)"; CHRDLG_UNDERLINE_BOLDLONGDASH; > ;
			< "Dot Dash"; CHRDLG_UNDERLINE_DASHDOT; > ;
			< "Dot Dash (Bold)"; CHRDLG_UNDERLINE_BOLDDASHDOT; > ;
			< "Dot Dot Dash"; CHRDLG_UNDERLINE_DASHDOTDOT; > ;
			< "Dot Dot Dash (Bold)"; CHRDLG_UNDERLINE_BOLDDASHDOTDOT; > ;
			< "Wave"; CHRDLG_UNDERLINE_WAVE; > ;
			< "Wave (Bold)"; CHRDLG_UNDERLINE_BOLDWAVE; > ;
			< "Double Wave"; CHRDLG_UNDERLINE_DOUBLEWAVE; > ;
		};
	};
	FixedText FT_UNDERLINE_COLOR
	{
        Pos = MAP_APPFONT ( 184 , 62 );
        Size = MAP_APPFONT ( 68 , 8 );
        Text [ en-US ] = "U~nderline color";
	};
	ListBox LB_UNDERLINE_COLOR
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_UNDERLINE_COLOR";
		Border = TRUE;
        Pos = MAP_APPFONT ( 184 , 73 );
        Size = MAP_APPFONT ( 68 , 100 );
		TabStop = TRUE;
		DropDown = TRUE;
	};
	CheckBox CB_INDIVIDUALWORDS
	{
	    HelpID = "cui:CheckBox:RID_SVXPAGE_CHAR_EFFECTS:CB_INDIVIDUALWORDS";
        Pos = MAP_APPFONT ( 110 , 93 );
		Size = MAP_APPFONT ( 68 , 10 );
		TabStop = TRUE;
		Text [ en-US ] = "Individual ~words" ;
	};
    FixedLine FL_EFFECTS_ASIAN
	{
        Pos = MAP_APPFONT ( 106 , 110 ) ;
        Size = MAP_APPFONT ( 148 , 4 ) ;
	};
	FixedText FT_EMPHASIS
	{
        Pos = MAP_APPFONT ( 110 , 117 );
        Size = MAP_APPFONT ( 68 , 8 );
		Text [ en-US ] = "Emp~hasis mark" ;
	};
	ListBox LB_EMPHASIS
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_EMPHASIS";
		Border = TRUE;
        Pos = MAP_APPFONT ( 110 , 128 );
        Size = MAP_APPFONT ( 68 , 72 );
		TabStop = TRUE;
		DropDown = TRUE;
        StringList [ en-US ] =
        {
			< "(Without)" ; default ; > ;
            < "Dot" ; default ; > ;
            < "Circle" ; default ; > ;
            < "Disc" ; default ; > ;
            < "Accent" ; default ; > ;
        };
	};
    FixedText FT_POSITION
	{
        Pos = MAP_APPFONT ( 184 , 117 );
        Size = MAP_APPFONT ( 68 , 8 );
        Text [ en-US ] = "~Position" ;
	};
	ListBox LB_POSITION
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_POSITION";
		Border = TRUE;
        Pos = MAP_APPFONT ( 184 , 128 );
		Size = MAP_APPFONT ( 68 , 48 );
		TabStop = TRUE;
		DropDown = TRUE;
		StringList [ en-US ] =
		{
			< "Above text" ; CHRDLG_POSITION_OVER ; > ;
			< "Below text" ; CHRDLG_POSITION_UNDER ; > ;
		};
	};
    Window WIN_EFFECTS_PREVIEW
	{
        Border = TRUE ;
        Pos = MAP_APPFONT ( 6 , 149 ) ;
        Size = MAP_APPFONT ( 248 , 37 ) ;
		Text [ en-US ] = "Example";
	};
	FixedText FT_EFFECTS_FONTTYPE
	{
        Pos = MAP_APPFONT ( 6 , 168 ) ;
        Size = MAP_APPFONT ( 248 , 16 ) ;
        WordBreak = TRUE ;
            Hide = TRUE;
	};
	String STR_EFFECTS_CAPITALS
	{
		Text [ en-US ] = "Capitals" ;
	};
	String STR_EFFECTS_LOWERCASE
	{
		Text [ en-US ] = "Lowercase" ;
	};
	String STR_EFFECTS_TITLE
	{
		Text [ en-US ] = "Title" ;
	};
	String STR_EFFECTS_SMALL
	{
		Text [ en-US ] = "Small Capitals" ;
	};
	String STR_EFFECTS_OUTLINE
	{
		Text [ en-US ] = "Outline" ;
	};
	String STR_EFFECTS_SHADOW
	{
		Text [ en-US ] = "Shadow" ;
	};
	String STR_EFFECTS_BLINKING
	{
		Text [ en-US ] = "Blinking" ;
	};
	String STR_CHARNAME_TRANSPARENT
	{
		Text [ en-US ] = "Transparent";
	};
};

// RID_SVXPAGE_CHAR_POSITION ------------------------------------------------

TabPage RID_SVXPAGE_CHAR_POSITION
{
	HelpId = HID_SVXPAGE_CHAR_POSITION ;
	Size = MAP_APPFONT ( 260 , 185 ) ;
	Hide = TRUE ;
	FixedLine FL_POSITION
	{
        Pos = MAP_APPFONT ( 6 , 3 );
        Size = MAP_APPFONT ( 248 , 8 );
		Text [ en-US ] = "Position" ;
	};
	RadioButton RB_HIGHPOS
	{
	    HelpID = "cui:RadioButton:RID_SVXPAGE_CHAR_POSITION:RB_HIGHPOS";
        Pos = MAP_APPFONT ( 12 , 16 );
        Size = MAP_APPFONT ( 58 , 10 );
        Text [ en-US ] = "Superscript" ;
		TabStop = TRUE;
	};
	RadioButton RB_NORMALPOS
	{
	    HelpID = "cui:RadioButton:RID_SVXPAGE_CHAR_POSITION:RB_NORMALPOS";
        Pos = MAP_APPFONT ( 12 , 30 );
        Size = MAP_APPFONT ( 58 , 10 );
        Text [ en-US ] = "Normal" ;
		TabStop = TRUE;
	};
	RadioButton RB_LOWPOS
	{
	    HelpID = "cui:RadioButton:RID_SVXPAGE_CHAR_POSITION:RB_LOWPOS";
        Pos = MAP_APPFONT ( 12 , 44 );
        Size = MAP_APPFONT ( 58 , 10 );
        Text [ en-US ] = "Subscript" ;
		TabStop = TRUE;
	};
	FixedText FT_HIGHLOW
	{
        Pos = MAP_APPFONT ( 74 , 16 );
        Size = MAP_APPFONT ( 58 , 8 );
        Text [ en-US ] = "~Raise/lower by" ;
	};
	MetricField ED_HIGHLOW
	{
	    HelpID = "cui:MetricField:RID_SVXPAGE_CHAR_POSITION:ED_HIGHLOW";
		Border = TRUE;
        Pos = MAP_APPFONT ( 136 , 14 );
        Size = MAP_APPFONT ( 30 , 12 );
		TabStop = TRUE;
		Repeat = TRUE ;
		Spin = TRUE ;
		Minimum = 1 ;
		Maximum = 100 ;
		Unit = FUNIT_PERCENT ;
		First = 1 ;
		Last = 100 ;
		SpinSize = 1 ;
	};
	CheckBox CB_HIGHLOW
	{
	    HelpID = "cui:CheckBox:RID_SVXPAGE_CHAR_POSITION:CB_HIGHLOW";
        Pos = MAP_APPFONT ( 172 , 16 );
        Size = MAP_APPFONT ( 76 , 10 );
        Text [ en-US ] = "A~utomatic" ;
		TabStop = TRUE;
	};
	FixedText FT_FONTSIZE
	{
        Pos = MAP_APPFONT ( 74 , 32 );
        Size = MAP_APPFONT ( 58 , 8 );
        Text [ en-US ] = "Relative font size" ;
	};
	MetricField ED_FONTSIZE
	{
	    HelpID = "cui:MetricField:RID_SVXPAGE_CHAR_POSITION:ED_FONTSIZE";
		Border = TRUE;
        Pos = MAP_APPFONT ( 136 , 30 );
        Size = MAP_APPFONT ( 30 , 12 );
		TabStop = TRUE;
		Repeat = TRUE ;
		Spin = TRUE ;
		Minimum = 1 ;
		Maximum = 100 ;
		Unit = FUNIT_PERCENT ;
		First = 1 ;
		Last = 100 ;
		SpinSize = 1 ;
	};
	FixedLine FL_ROTATION_SCALING
	{
        Pos = MAP_APPFONT ( 6 , 59 );
        Size = MAP_APPFONT ( 248 , 8 );
		Text [ en-US ] = "Rotation / scaling" ;
	};
	FixedLine FL_SCALING
	{
        Pos = MAP_APPFONT ( 6 , 59 );
        Size = MAP_APPFONT ( 248 , 8 );
		Text [ en-US ] = "Scaling" ;
	};
	RadioButton RB_0_DEG
	{
	    HelpID = "cui:RadioButton:RID_SVXPAGE_CHAR_POSITION:RB_0_DEG";
        Pos = MAP_APPFONT ( 12 , 70 );
        Size = MAP_APPFONT ( 46 , 10 );
		TabStop = TRUE;
        Text [ en-US ] = "~0 degrees" ;
	};
	RadioButton RB_90_DEG
	{
	    HelpID = "cui:RadioButton:RID_SVXPAGE_CHAR_POSITION:RB_90_DEG";
        Pos = MAP_APPFONT ( 62 , 70 );
        Size = MAP_APPFONT ( 46 , 10 );
		TabStop = TRUE;
        Text [ en-US ] = "~90 degrees" ;
	};
	RadioButton RB_270_DEG
	{
	    HelpID = "cui:RadioButton:RID_SVXPAGE_CHAR_POSITION:RB_270_DEG";
        Pos = MAP_APPFONT ( 112 , 70 );
        Size = MAP_APPFONT ( 46 , 10 );
		TabStop = TRUE;
        Text [ en-US ] = "~270 degrees" ;
	};
	CheckBox CB_FIT_TO_LINE
	{
	    HelpID = "cui:CheckBox:RID_SVXPAGE_CHAR_POSITION:CB_FIT_TO_LINE";
        Pos = MAP_APPFONT ( 162 , 70 );
        Size = MAP_APPFONT ( 86 , 10 );
		TabStop = TRUE;
        Text [ en-US ] = "Fit to line" ;
	};
	FixedText FT_SCALE_WIDTH
	{
        Pos = MAP_APPFONT ( 12 , 86 );
        Size = MAP_APPFONT ( 80 , 8 );
        Text [ en-US ] = "Scale ~width" ;
	};
	MetricField MF_SCALE_WIDTH
	{
	    HelpID = "cui:MetricField:RID_SVXPAGE_CHAR_POSITION:MF_SCALE_WIDTH";
		Border = TRUE;
        Pos = MAP_APPFONT ( 94 , 84 );
        Size = MAP_APPFONT ( 30 , 12 );
		TabStop = TRUE;
		Repeat = TRUE ;
		Spin = TRUE ;
		Minimum = 1 ;
		Maximum = 999 ;
		Unit = FUNIT_PERCENT ;
		First = 50 ;
		Last = 200 ;
		SpinSize = 1 ;
	};
	FixedLine FL_KERNING2
	{
        Pos = MAP_APPFONT ( 6 , 100 );
        Size = MAP_APPFONT ( 248 , 8 );
		Text [ en-US ] = "Spacing" ;
	};
	ListBox LB_KERNING2
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_POSITION:LB_KERNING2";
		Border = TRUE;
        Pos = MAP_APPFONT ( 12 , 111 );
		Size = MAP_APPFONT ( 72 , 48 ) ;
		DropDown = TRUE ;
		StringList [ en-US ] =
		{
			< "Default" ; Default ; > ;
			< "Expanded" ; Default ; > ;
			< "Condensed" ; Default ; > ;
		};
	};
	FixedText FT_KERNING2
	{
        Pos = MAP_APPFONT ( 86 , 113 );
        Size = MAP_APPFONT ( 24 , 8 );
        Center = TRUE ;
        Text [ en-US ] = "b~y" ;
	};
	MetricField ED_KERNING2
	{
	    HelpID = "cui:MetricField:RID_SVXPAGE_CHAR_POSITION:ED_KERNING2";
		Border = TRUE;
        Pos = MAP_APPFONT ( 112 , 111 );
        Size = MAP_APPFONT ( 40 , 12 );
		TabStop = TRUE;
		Repeat = TRUE ;
		Spin = TRUE ;
		Maximum = 9999 ;
		DecimalDigits = 1 ;
		Unit = FUNIT_POINT ;
		SpinSize = 10 ;
	};
	CheckBox CB_PAIRKERNING
	{
	    HelpID = "cui:CheckBox:RID_SVXPAGE_CHAR_POSITION:CB_PAIRKERNING";
        Pos = MAP_APPFONT ( 156 , 113 );
        Size = MAP_APPFONT ( 92 , 10 );
		Text [ en-US ] = "~Pair kerning" ;
		TabStop = TRUE;
	};
	Window WIN_POS_PREVIEW
	{
		Text [ en-US ] = "Example" ;
		Border = TRUE ;
        Pos = MAP_APPFONT ( 6 , 149 ) ;
        Size = MAP_APPFONT ( 248 , 37 ) ;
	};
	FixedText FT_POS_FONTTYPE
	{
        Pos = MAP_APPFONT ( 6 , 168 ) ;
        Size = MAP_APPFONT ( 248 , 16 ) ;
        WordBreak = TRUE ;
        Hide = TRUE;
	};
};

TabPage RID_SVXPAGE_CHAR_TWOLINES
{
	HelpId = HID_SVXPAGE_CHAR_TWOLINES ;
	Size = MAP_APPFONT ( 260 , 185 ) ;
	Hide = TRUE ;
	FixedLine FL_SWITCHON
	{
        Pos = MAP_APPFONT ( 6 , 3 );
        Size = MAP_APPFONT ( 248 , 8 );
		Text [ en-US ] = "Double-lined" ;
	};
	CheckBox CB_TWOLINES
	{
	    HelpID = "cui:CheckBox:RID_SVXPAGE_CHAR_TWOLINES:CB_TWOLINES";
        Pos = MAP_APPFONT ( 12 , 14 );
        Size = MAP_APPFONT ( 236 , 10 );
        Text [ en-US ] = "~Write in double lines" ;
		TabStop = TRUE;
	};
	FixedLine FL_ENCLOSE
	{
        Pos = MAP_APPFONT ( 6 , 30 );
        Size = MAP_APPFONT ( 248 , 8 );
		Text [ en-US ] = "Enclosing character" ;
	};
	FixedText FT_STARTBRACKET
	{
        Pos = MAP_APPFONT ( 12 , 41 );
        Size = MAP_APPFONT ( 90 , 8 );
		Text [ en-US ] = "I~nitial character" ;
	};
	ListBox ED_STARTBRACKET
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_TWOLINES:ED_STARTBRACKET";
        Pos = MAP_APPFONT ( 12 , 52 );
        Size = MAP_APPFONT ( 90 , 72 );
		TabStop = TRUE;
		Border = TRUE;
		StringList [ en-US ] =
		{
			< "(None)" ; CHRDLG_ENCLOSE_NONE ; > ;
			< "(" ; CHRDLG_ENCLOSE_ROUND ; > ;
			< "[" ; CHRDLG_ENCLOSE_SQUARE ; > ;
			< "<" ; CHRDLG_ENCLOSE_POINTED ; > ;
			< "{" ; CHRDLG_ENCLOSE_CURVED ; > ;
			< "Other Characters..." ; CHRDLG_ENCLOSE_SPECIAL_CHAR ; > ;
		};
	};
	FixedText FT_ENDBRACKET
	{
        Pos = MAP_APPFONT ( 108 , 41 );
        Size = MAP_APPFONT ( 90 , 8 );
		Text [ en-US ] = "Final charact~er" ;
	};
	ListBox ED_ENDBRACKET
	{
	    HelpID = "cui:ListBox:RID_SVXPAGE_CHAR_TWOLINES:ED_ENDBRACKET";
        Pos = MAP_APPFONT ( 108 , 52 );
        Size = MAP_APPFONT ( 90 , 72 );
		TabStop = TRUE;
		Border = TRUE;
		StringList [ en-US ] =
		{
			< "(None)" ; CHRDLG_ENCLOSE_NONE ; > ;
			< ")" ; CHRDLG_ENCLOSE_ROUND ; > ;
			< "]" ; CHRDLG_ENCLOSE_SQUARE ; > ;
			< ">" ; CHRDLG_ENCLOSE_POINTED ; > ;
			< "}" ; CHRDLG_ENCLOSE_CURVED ; > ;
			< "Other Characters..." ; CHRDLG_ENCLOSE_SPECIAL_CHAR ; > ;
        };
	};
	Window WIN_TWOLINES_PREVIEW
	{
		Border = TRUE ;
        Pos = MAP_APPFONT ( 6 , 149 ) ;
        Size = MAP_APPFONT ( 248 , 37 ) ;
		Text [ en-US ] = "Example" ;
	};
	FixedText FT_TWOLINES_FONTTYPE
	{
        Pos = MAP_APPFONT ( 6 , 168 ) ;
        Size = MAP_APPFONT ( 248 , 16 ) ;
        WordBreak = TRUE ;
		Hide = TRUE;
	};
};

 // ********************************************************************** EOF




































































































































































