Commit de6edcc4 authored by Dinar Ahmatnurov's avatar Dinar Ahmatnurov

fixing issue with "ёЁ";

parent e9f7c4ae
......@@ -1938,16 +1938,27 @@ static const int* getFontData(int fontFace)
return ascii;
}
inline void readCheck(int &c, int &i, const string &text, const int rightBoundary)
inline void readCheck(int &c, int &i, const string &text)
{
int leftBoundary = ' ', rightBoundary = 127;
if(c >= 0x80)
{
if(c >= 0xC0 && c <= 0xDF) //2 bytes utf
{
if(c & 1)
{
c = (uchar)text[++i] + 47;
leftBoundary = 175;
rightBoundary = 191;
}
else
{
c = (uchar)text[++i] - 17;
leftBoundary = 127;
rightBoundary = 175;
}
}
else
{
......@@ -1969,7 +1980,7 @@ inline void readCheck(int &c, int &i, const string &text, const int rightBoundar
}
}
if(c >= rightBoundary || c < ' ')
if(c >= rightBoundary || c < leftBoundary)
c = '?';
}
......@@ -1998,14 +2009,12 @@ void putText( Mat& img, const string& text, Point org,
pts.reserve(1 << 10);
const char **faces = cv::g_HersheyGlyphs;
int rightBoundary = fontFace == FONT_HERSHEY_COMPLEX ? 191 : 127;
for( int i = 0; text[i] != '\0'; i++ )
{
int c = (uchar)text[i];
Point p;
readCheck(c, i, text, rightBoundary);
readCheck(c, i, text);
const char* ptr = faces[ascii[(c-' ')+1]];
p.x = (uchar)ptr[0] - 'R';
......@@ -2047,14 +2056,12 @@ Size getTextSize( const string& text, int fontFace, double fontScale, int thickn
int cap_line = (ascii[0] >> 4) & 15;
size.height = cvRound((cap_line + base_line)*fontScale + (thickness+1)/2);
int rightBoundary = fontFace == FONT_HERSHEY_COMPLEX ? 191 : 127;
for( int i = 0; text[i] != '\0'; i++ )
{
int c = (uchar)text[i];
Point p;
readCheck(c, i, text, rightBoundary);
readCheck(c, i, text);
const char* ptr = faces[ascii[(c-' ')+1]];
p.x = (uchar)ptr[0] - 'R';
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment