[USETUP][VGAFONTS] Improve Romanian character display (#4750)

- Modify media/vgafonts/28606-8x8.bin Romanian VGA font to display special characters.
- Add global variables for special characters "Char..." for Romanian VGA font.
- Toggle the global variables "Char..." in SetConsoleCodePage function.
CORE-18446
This commit is contained in:
Katayama Hirofumi MZ 2022-10-08 07:46:00 +09:00 committed by GitHub
parent fece68b63f
commit 3c5a56ed93
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 178 additions and 66 deletions

View file

@ -417,7 +417,7 @@ CONSOLE_SetUnderlinedTextXY(
coPos.Y++;
FillConsoleOutputCharacterA(StdOutput,
0xCD,
CharDoubleHorizontalLine,
Length,
coPos,
&Written);

View file

@ -78,7 +78,7 @@ DrawListFrame(
coPos.X = ListUi->Left;
coPos.Y = ListUi->Top;
FillConsoleOutputCharacterA(StdOutput,
0xDA, // '+',
CharUpperLeftCorner, // '+',
1,
coPos,
&Written);
@ -87,7 +87,7 @@ DrawListFrame(
coPos.X = ListUi->Left + 1;
coPos.Y = ListUi->Top;
FillConsoleOutputCharacterA(StdOutput,
0xC4, // '-',
CharHorizontalLine, // '-',
ListUi->Right - ListUi->Left - 1,
coPos,
&Written);
@ -96,7 +96,7 @@ DrawListFrame(
coPos.X = ListUi->Right;
coPos.Y = ListUi->Top;
FillConsoleOutputCharacterA(StdOutput,
0xBF, // '+',
CharUpperRightCorner, // '+',
1,
coPos,
&Written);
@ -107,14 +107,14 @@ DrawListFrame(
coPos.X = ListUi->Left;
coPos.Y = i;
FillConsoleOutputCharacterA(StdOutput,
0xB3, // '|',
CharVerticalLine, // '|',
1,
coPos,
&Written);
coPos.X = ListUi->Right;
FillConsoleOutputCharacterA(StdOutput,
0xB3, //'|',
CharVerticalLine, //'|',
1,
coPos,
&Written);
@ -124,7 +124,7 @@ DrawListFrame(
coPos.X = ListUi->Left;
coPos.Y = ListUi->Bottom;
FillConsoleOutputCharacterA(StdOutput,
0xC0, // '+',
CharLowerLeftCorner, // '+',
1,
coPos,
&Written);
@ -133,7 +133,7 @@ DrawListFrame(
coPos.X = ListUi->Left + 1;
coPos.Y = ListUi->Bottom;
FillConsoleOutputCharacterA(StdOutput,
0xC4, // '-',
CharHorizontalLine, // '-',
ListUi->Right - ListUi->Left - 1,
coPos,
&Written);
@ -142,7 +142,7 @@ DrawListFrame(
coPos.X = ListUi->Right;
coPos.Y = ListUi->Bottom;
FillConsoleOutputCharacterA(StdOutput,
0xD9, // '+',
CharLowerRightCorner, // '+',
1,
coPos,
&Written);
@ -239,7 +239,7 @@ DrawScrollBarGenericList(
if (ListUi->FirstShown != List->ListHead.Flink)
{
FillConsoleOutputCharacterA(StdOutput,
'\x18',
CharUpArrow,
1,
coPos,
&Written);
@ -257,7 +257,7 @@ DrawScrollBarGenericList(
if (ListUi->LastShown != List->ListHead.Blink)
{
FillConsoleOutputCharacterA(StdOutput,
'\x19',
CharDownArrow,
1,
coPos,
&Written);

View file

@ -30,6 +30,27 @@
#define NDEBUG
#include <debug.h>
/* Special characters */
CHAR CharBullet = 0x07; /* bullet */
CHAR CharBlock = 0xDB; /* block */
CHAR CharHalfBlock = 0xDD; /* half-left block */
CHAR CharUpArrow = 0x18; /* up arrow */
CHAR CharDownArrow = 0x19; /* down arrow */
CHAR CharHorizontalLine = 0xC4; /* horizontal line */
CHAR CharVerticalLine = 0xB3; /* vertical line */
CHAR CharUpperLeftCorner = 0xDA; /* upper left corner */
CHAR CharUpperRightCorner = 0xBF; /* upper right corner */
CHAR CharLowerLeftCorner = 0xC0; /* lower left corner */
CHAR CharLowerRightCorner = 0xD9; /* lower right corner */
CHAR CharVertLineAndRightHorizLine = 0xC3; /* |- (vertical line and right horizontal line) */
CHAR CharLeftHorizLineAndVertLine = 0xB4; /* -| (left horizontal line and vertical line) */
CHAR CharDoubleHorizontalLine = 0xCD; /* double horizontal line (and underline) */
CHAR CharDoubleVerticalLine = 0xBA; /* double vertical line */
CHAR CharDoubleUpperLeftCorner = 0xC9; /* double upper left corner */
CHAR CharDoubleUpperRightCorner = 0xBB; /* double upper right corner */
CHAR CharDoubleLowerLeftCorner = 0xC8; /* double lower left corner */
CHAR CharDoubleLowerRightCorner = 0xBC; /* double lower right corner */
static
ULONG
FindLanguageIndex(VOID)
@ -535,6 +556,62 @@ SetConsoleCodePage(VOID)
wCodePage = (UINT)wcstoul(MUIGetOEMCodePage(SelectedLanguageId), NULL, 10);
SetConsoleOutputCP(wCodePage);
#endif
}
/* EOF */
switch (wCodePage)
{
case 28606: /* Romanian */
/* Set special characters */
CharBullet = 0x07;
CharBlock = 0x01;
CharHalfBlock = 0x02;
CharUpArrow = 0x03;
CharDownArrow = 0x04;
CharHorizontalLine = 0x05;
CharVerticalLine = 0x06;
CharUpperLeftCorner = 0x08;
CharUpperRightCorner = 0x09;
CharLowerLeftCorner = 0x0B;
CharLowerRightCorner = 0x0C;
CharVertLineAndRightHorizLine = 0x0E;
CharLeftHorizLineAndVertLine = 0x0F;
CharDoubleHorizontalLine = 0x10;
CharDoubleVerticalLine = 0x11;
CharDoubleUpperLeftCorner = 0x12;
CharDoubleUpperRightCorner = 0x13;
CharDoubleLowerLeftCorner = 0x14;
CharDoubleLowerRightCorner = 0x15;
/* FIXME: Enter 640x400 video mode */
break;
case 932: /* Japanese */
/* FIXME: Set special characters */
/* FIXME: Enter 640x400 video mode */
break;
default: /* Other codepages */
/* Set special characters */
CharBullet = 0x07;
CharBlock = 0xDB;
CharHalfBlock = 0xDD;
CharUpArrow = 0x18;
CharDownArrow = 0x19;
CharHorizontalLine = 0xC4;
CharVerticalLine = 0xB3;
CharUpperLeftCorner = 0xDA;
CharUpperRightCorner = 0xBF;
CharLowerLeftCorner = 0xC0;
CharLowerRightCorner = 0xD9;
CharVertLineAndRightHorizLine = 0xC3;
CharLeftHorizLineAndVertLine = 0xB4;
CharDoubleHorizontalLine = 0xCD;
CharDoubleVerticalLine = 0xBA;
CharDoubleUpperLeftCorner = 0xC9;
CharDoubleUpperRightCorner = 0xBB;
CharDoubleLowerLeftCorner = 0xC8;
CharDoubleLowerRightCorner = 0xBC;
/* FIXME: Enter 720x400 video mode */
break;
}
}

View file

@ -99,6 +99,27 @@ MUISetStyledText(
IN INT TextID,
IN INT Flags);
/* Special characters */
extern CHAR CharBullet;
extern CHAR CharBlock;
extern CHAR CharHalfBlock;
extern CHAR CharUpArrow;
extern CHAR CharDownArrow;
extern CHAR CharHorizontalLine;
extern CHAR CharVerticalLine;
extern CHAR CharUpperLeftCorner;
extern CHAR CharUpperRightCorner;
extern CHAR CharLowerLeftCorner;
extern CHAR CharLowerRightCorner;
extern CHAR CharVertLineAndRightHorizLine;
extern CHAR CharLeftHorizLineAndVertLine;
extern CHAR CharDoubleHorizontalLine;
extern CHAR CharDoubleVerticalLine;
extern CHAR CharDoubleUpperLeftCorner;
extern CHAR CharDoubleUpperRightCorner;
extern CHAR CharDoubleLowerLeftCorner;
extern CHAR CharDoubleLowerRightCorner;
/* MUI Text IDs */
/* Static MUI Text */

View file

@ -696,7 +696,7 @@ DrawPartitionList(
coPos.X = ListUi->Left;
coPos.Y = ListUi->Top;
FillConsoleOutputCharacterA(StdOutput,
0xDA, // '+',
CharUpperLeftCorner, // '+',
1,
coPos,
&Written);
@ -707,7 +707,7 @@ DrawPartitionList(
if (ListUi->Offset == 0)
{
FillConsoleOutputCharacterA(StdOutput,
0xC4, // '-',
CharHorizontalLine, // '-',
Width,
coPos,
&Written);
@ -715,19 +715,23 @@ DrawPartitionList(
else
{
FillConsoleOutputCharacterA(StdOutput,
0xC4, // '-',
CharHorizontalLine, // '-',
Width - 4,
coPos,
&Written);
coPos.X = ListUi->Right - 5;
WriteConsoleOutputCharacterA(StdOutput,
"(\x18)", // "(up)"
3,
coPos,
&Written);
{
CHAR szBuff[] = "(.)"; // "(up)"
szBuff[1] = CharUpArrow;
coPos.X = ListUi->Right - 5;
WriteConsoleOutputCharacterA(StdOutput,
szBuff,
3,
coPos,
&Written);
}
coPos.X = ListUi->Right - 2;
FillConsoleOutputCharacterA(StdOutput,
0xC4, // '-',
CharHorizontalLine, // '-',
2,
coPos,
&Written);
@ -737,7 +741,7 @@ DrawPartitionList(
coPos.X = ListUi->Right;
coPos.Y = ListUi->Top;
FillConsoleOutputCharacterA(StdOutput,
0xBF, // '+',
CharUpperRightCorner, // '+',
1,
coPos,
&Written);
@ -748,14 +752,14 @@ DrawPartitionList(
coPos.X = ListUi->Left;
coPos.Y = i;
FillConsoleOutputCharacterA(StdOutput,
0xB3, // '|',
CharVerticalLine, // '|',
1,
coPos,
&Written);
coPos.X = ListUi->Right;
FillConsoleOutputCharacterA(StdOutput,
0xB3, //'|',
CharVerticalLine, //'|',
1,
coPos,
&Written);
@ -765,7 +769,7 @@ DrawPartitionList(
coPos.X = ListUi->Left;
coPos.Y = ListUi->Bottom;
FillConsoleOutputCharacterA(StdOutput,
0xC0, // '+',
CharLowerLeftCorner, // '+',
1,
coPos,
&Written);
@ -776,7 +780,7 @@ DrawPartitionList(
if (LastLine - ListUi->Offset <= Height)
{
FillConsoleOutputCharacterA(StdOutput,
0xC4, // '-',
CharHorizontalLine, // '-',
Width,
coPos,
&Written);
@ -784,19 +788,23 @@ DrawPartitionList(
else
{
FillConsoleOutputCharacterA(StdOutput,
0xC4, // '-',
CharHorizontalLine, // '-',
Width - 4,
coPos,
&Written);
coPos.X = ListUi->Right - 5;
WriteConsoleOutputCharacterA(StdOutput,
"(\x19)", // "(down)"
3,
coPos,
&Written);
{
CHAR szBuff[] = "(.)"; // "(down)"
szBuff[1] = CharDownArrow;
coPos.X = ListUi->Right - 5;
WriteConsoleOutputCharacterA(StdOutput,
szBuff,
3,
coPos,
&Written);
}
coPos.X = ListUi->Right - 2;
FillConsoleOutputCharacterA(StdOutput,
0xC4, // '-',
CharHorizontalLine, // '-',
2,
coPos,
&Written);
@ -806,7 +814,7 @@ DrawPartitionList(
coPos.X = ListUi->Right;
coPos.Y = ListUi->Bottom;
FillConsoleOutputCharacterA(StdOutput,
0xD9, // '+',
CharLowerRightCorner, // '+',
1,
coPos,
&Written);

View file

@ -56,7 +56,7 @@ DrawBorder(
coPos.X = Bar->Left;
coPos.Y = Bar->Top + 1;
FillConsoleOutputCharacterA(StdOutput,
0xDA, // '+',
CharUpperLeftCorner, // '+',
1,
coPos,
&Written);
@ -65,7 +65,7 @@ DrawBorder(
coPos.X = Bar->Left + 1;
coPos.Y = Bar->Top + 1;
FillConsoleOutputCharacterA(StdOutput,
0xC4, // '-',
CharHorizontalLine, // '-',
Bar->Right - Bar->Left - 1,
coPos,
&Written);
@ -74,7 +74,7 @@ DrawBorder(
coPos.X = Bar->Right;
coPos.Y = Bar->Top + 1;
FillConsoleOutputCharacterA(StdOutput,
0xBF, // '+',
CharUpperRightCorner, // '+',
1,
coPos,
&Written);
@ -85,14 +85,14 @@ DrawBorder(
coPos.X = Bar->Left;
coPos.Y = i;
FillConsoleOutputCharacterA(StdOutput,
0xB3, // '|',
CharVerticalLine, // '|',
1,
coPos,
&Written);
coPos.X = Bar->Right;
FillConsoleOutputCharacterA(StdOutput,
0xB3, //'|',
CharVerticalLine, //'|',
1,
coPos,
&Written);
@ -102,7 +102,7 @@ DrawBorder(
coPos.X = Bar->Left;
coPos.Y = Bar->Bottom;
FillConsoleOutputCharacterA(StdOutput,
0xC0, // '+',
CharLowerLeftCorner, // '+',
1,
coPos,
&Written);
@ -111,7 +111,7 @@ DrawBorder(
coPos.X = Bar->Left + 1;
coPos.Y = Bar->Bottom;
FillConsoleOutputCharacterA(StdOutput,
0xC4, // '-',
CharHorizontalLine, // '-',
Bar->Right - Bar->Left - 1,
coPos,
&Written);
@ -120,7 +120,7 @@ DrawBorder(
coPos.X = Bar->Right;
coPos.Y = Bar->Bottom;
FillConsoleOutputCharacterA(StdOutput,
0xD9, // '+',
CharLowerRightCorner, // '+',
1,
coPos,
&Written);
@ -139,7 +139,7 @@ DrawThickBorder(
coPos.X = Bar->Left;
coPos.Y = Bar->Top + 1;
FillConsoleOutputCharacterA(StdOutput,
0xC9, // '+',
CharDoubleUpperLeftCorner, // '+',
1,
coPos,
&Written);
@ -148,7 +148,7 @@ DrawThickBorder(
coPos.X = Bar->Left + 1;
coPos.Y = Bar->Top + 1;
FillConsoleOutputCharacterA(StdOutput,
0xCD, // '-',
CharDoubleHorizontalLine, // '-',
Bar->Right - Bar->Left - 1,
coPos,
&Written);
@ -157,7 +157,7 @@ DrawThickBorder(
coPos.X = Bar->Right;
coPos.Y = Bar->Top + 1;
FillConsoleOutputCharacterA(StdOutput,
0xBB, // '+',
CharDoubleUpperRightCorner, // '+',
1,
coPos,
&Written);
@ -168,14 +168,14 @@ DrawThickBorder(
coPos.X = Bar->Left;
coPos.Y = i;
FillConsoleOutputCharacterA(StdOutput,
0xBA, // '|',
CharDoubleVerticalLine, // '|',
1,
coPos,
&Written);
coPos.X = Bar->Right;
FillConsoleOutputCharacterA(StdOutput,
0xBA, //'|',
CharDoubleVerticalLine, //'|',
1,
coPos,
&Written);
@ -185,7 +185,7 @@ DrawThickBorder(
coPos.X = Bar->Left;
coPos.Y = Bar->Bottom;
FillConsoleOutputCharacterA(StdOutput,
0xC8, // '+',
CharDoubleLowerLeftCorner, // '+',
1,
coPos,
&Written);
@ -194,7 +194,7 @@ DrawThickBorder(
coPos.X = Bar->Left + 1;
coPos.Y = Bar->Bottom;
FillConsoleOutputCharacterA(StdOutput,
0xCD, // '-',
CharDoubleHorizontalLine, // '-',
Bar->Right - Bar->Left - 1,
coPos,
&Written);
@ -203,7 +203,7 @@ DrawThickBorder(
coPos.X = Bar->Right;
coPos.Y = Bar->Bottom;
FillConsoleOutputCharacterA(StdOutput,
0xBC, // '+',
CharDoubleLowerRightCorner, // '+',
1,
coPos,
&Written);
@ -404,7 +404,7 @@ ProgressSetStep(
{
coPos.X = Bar->Left + 1;
FillConsoleOutputCharacterA(StdOutput,
0xDB,
CharBlock,
Bar->Pos / 2,
coPos,
&Written);
@ -413,7 +413,7 @@ ProgressSetStep(
if (NewPos & 1)
{
FillConsoleOutputCharacterA(StdOutput,
0xDD,
CharHalfBlock,
1,
coPos,
&Written);

View file

@ -175,7 +175,7 @@ DrawBox(IN SHORT xLeft,
coPos.X = xLeft;
coPos.Y = yTop;
FillConsoleOutputCharacterA(StdOutput,
0xDA, // '+',
CharUpperLeftCorner, // '+',
1,
coPos,
&Written);
@ -184,7 +184,7 @@ DrawBox(IN SHORT xLeft,
coPos.X = xLeft + 1;
coPos.Y = yTop;
FillConsoleOutputCharacterA(StdOutput,
0xC4, // '-',
CharHorizontalLine, // '-',
Width - 2,
coPos,
&Written);
@ -193,7 +193,7 @@ DrawBox(IN SHORT xLeft,
coPos.X = xLeft + Width - 1;
coPos.Y = yTop;
FillConsoleOutputCharacterA(StdOutput,
0xBF, // '+',
CharUpperRightCorner, // '+',
1,
coPos,
&Written);
@ -203,7 +203,7 @@ DrawBox(IN SHORT xLeft,
{
coPos.X = xLeft;
FillConsoleOutputCharacterA(StdOutput,
0xB3, // '|',
CharVerticalLine, // '|',
1,
coPos,
&Written);
@ -217,7 +217,7 @@ DrawBox(IN SHORT xLeft,
coPos.X = xLeft + Width - 1;
FillConsoleOutputCharacterA(StdOutput,
0xB3, // '|',
CharVerticalLine, // '|',
1,
coPos,
&Written);
@ -227,7 +227,7 @@ DrawBox(IN SHORT xLeft,
coPos.X = xLeft;
coPos.Y = yTop + Height - 1;
FillConsoleOutputCharacterA(StdOutput,
0xC0, // '+',
CharLowerLeftCorner, // '+',
1,
coPos,
&Written);
@ -236,7 +236,7 @@ DrawBox(IN SHORT xLeft,
coPos.X = xLeft + 1;
coPos.Y = yTop + Height - 1;
FillConsoleOutputCharacterA(StdOutput,
0xC4, // '-',
CharHorizontalLine, // '-',
Width - 2,
coPos,
&Written);
@ -245,7 +245,7 @@ DrawBox(IN SHORT xLeft,
coPos.X = xLeft + Width - 1;
coPos.Y = yTop + Height - 1;
FillConsoleOutputCharacterA(StdOutput,
0xD9, // '+',
CharLowerRightCorner, // '+',
1,
coPos,
&Written);
@ -375,21 +375,21 @@ PopupError(PCCH Text,
coPos.Y = yTop + Height - 3;
coPos.X = xLeft;
FillConsoleOutputCharacterA(StdOutput,
0xC3, // '+',
CharVertLineAndRightHorizLine, // '+',
1,
coPos,
&Written);
coPos.X = xLeft + 1;
FillConsoleOutputCharacterA(StdOutput,
0xC4, // '-',
CharHorizontalLine, // '-',
Width - 2,
coPos,
&Written);
coPos.X = xLeft + Width - 1;
FillConsoleOutputCharacterA(StdOutput,
0xB4, // '+',
CharLeftHorizLineAndVertLine, // '+',
1,
coPos,
&Written);
@ -663,6 +663,12 @@ LanguagePage(PINPUT_RECORD Ir)
/* Load the font */
SetConsoleCodePage();
/* Redraw the list */
DrawGenericList(&ListUi,
2, 18,
xScreen - 3,
yScreen - 3);
/* Redraw language selection page in native language */
MUIDisplayPage(LANGUAGE_PAGE);
}

Binary file not shown.