MYuppy TrueType GB2312 font from Monotype Imaging Inc. (Bug 1899)
MYuppyGB-Medium
Format - TTF TrueType
Character set - GB2312
Encoding - Unicode
This font was designed to appeal to young urban professionals, Monotype Yuppy is a newly
designed typeface with a unique, modern feel. The design combines elements
of handwriting with classic letterform characteristics, such as open shapes
and proper proportions that help the typeface retain legibility.
/*
**********************************************************************
* Copyright (C) 1998-2004, International Business Machines
* Corporation and others. All Rights Reserved.
**********************************************************************
*/
#include "LETypes.h"
#include "LEInsertionList.h"
U_NAMESPACE_BEGIN
#define ANY_NUMBER 1
struct InsertionRecord
{
InsertionRecord *next;
le_int32 position;
le_int32 count;
LEGlyphID glyphs[ANY_NUMBER];
};
UOBJECT_DEFINE_RTTI_IMPLEMENTATION(LEInsertionList)
LEInsertionList::LEInsertionList(le_bool rightToLeft)
: head(NULL), tail(NULL), growAmount(0), append(rightToLeft)
{
tail = (InsertionRecord *) &head;
}
LEInsertionList::~LEInsertionList()
{
reset();
}
void LEInsertionList::reset()
{
while (head != NULL) {
InsertionRecord *record = head;
head = head->next;
LE_DELETE_ARRAY(record);
}
tail = (InsertionRecord *) &head;
growAmount = 0;
}
le_int32 LEInsertionList::getGrowAmount()
{
return growAmount;
}
LEGlyphID *LEInsertionList::insert(le_int32 position, le_int32 count,
LEErrorCode &success)
{
if (LE_FAILURE(success)) {
return 0;
}
InsertionRecord *insertion = (InsertionRecord *) LE_NEW_ARRAY(char, sizeof(InsertionRecord) + (count - ANY_NUMBER) * sizeof (LEGlyphID));
if (!insertion) {
success = LE_MEMORY_ALLOCATION_ERROR;
return 0;
}
insertion->position = position;
insertion->count = count;
growAmount += count - 1;
if (append) {
// insert on end of list...
insertion->next = NULL;
tail->next = insertion;
tail = insertion;
} else {
// insert on front of list...
insertion->next = head;
head = insertion;
}
return insertion->glyphs;
}
le_bool LEInsertionList::applyInsertions(LEInsertionCallback *callback)
{
for (InsertionRecord *rec = head; rec != NULL; rec = rec->next) {
if (callback->applyInsertion(rec->position, rec->count, rec->glyphs)) {
return TRUE;
}
}
return FALSE;
}
U_NAMESPACE_END