   pushTo(x + 2 * w / 3, y + capHeight);
   pushTo(x, y + capHeight);
   pushTo(x, y);
+  NEXTLETTER
+}
+
+void writeC()
+{
+  float x = position.x;
+  float y = position.y;
+  float w = fontSize * 0.5;
+
+  pushTo(x + w, y + capHeight);
+  pushCmd("PD");
+  pushTo(x, y + capHeight);
+  pushTo(x, y);
+  pushTo(x + w, y);
+  NEXTLETTER
+}
+
+void writeD()
+{
+  float x = position.x;
+  float y = position.y;
+  float w = fontSize * 0.5;
+
+  pushCmd("PD");
+  pushTo(x + 3 * w / 4, y);
+  pushTo(x + w, y + capHeight / 4);
+  pushTo(x + w, y + 3 * capHeight / 4);
+  pushTo(x + 3 * w / 4, y + capHeight);
+  pushTo(x, y + capHeight);
+  pushTo(x, y);
+  NEXTLETTER
+}
+
+void writeE()
+{
+  float x = position.x;
+  float y = position.y;
+  float w = fontSize * 0.5;
+
+  pushCmd("PD");
+  pushTo(x, y + capHeight);
+  pushTo(x + w, y + capHeight);
   pushCmd("PU");
+  pushTo(x + w, y + capHeight / 2);
+  pushCmd("PD");
+  pushTo(x, y + capHeight / 2);
+  pushTo(x, y);
+  pushTo(x + w, y);
+  NEXTLETTER
+}
+
+void writeF()
+{
+  float x = position.x;
+  float y = position.y;
+  float w = fontSize * 0.5;
+
+  pushCmd("PD");
+  pushTo(x, y + capHeight);
+  pushTo(x + w, y + capHeight);
+  pushCmd("PU");
+  pushTo(x + w, y + capHeight / 2);
+  pushCmd("PD");
+  pushTo(x, y + capHeight / 2);
   NEXTLETTER
 }
 

  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;
  pushTo(x + w, y + capHeight);
  pushCmd("PD");
  pushTo(x, y + capHeight);

  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;

  pushCmd("PD");
  pushTo(x, y + capHeight);
  pushTo(x,y);
  pushTo(x + w, y);
  NEXTLETTER
}

void writeM() 
{
  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;

  pushCmd("PD");
  pushTo(x, y + capHeight);
  pushTo(x + w / 2, y + capHeight / 2);
  pushTo(x + w, y + capHeight);
  pushTo(x + w, y);
  NEXTLETTER
}

void writeN() 
{
  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;

  pushCmd("PD");
  pushTo(x, y + capHeight);
  pushTo(x + w, y);
  pushTo(x + w, y + capHeight);
  NEXTLETTER
}

void writeO() 
{
  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;

  pushCmd("PD");
  pushTo(x + w, y);
  pushTo(x + w, y + capHeight);
  pushTo(x, y + capHeight);
  pushTo(x, y);
  NEXTLETTER  
}

void writeP() 
{
  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;
  
  pushCmd("PD");
  pushTo(x, y + capHeight);
  pushTo(x + w, y + capHeight);
  pushTo(x + w, y + capHeight / 2);
  pushTo(x, y + capHeight / 2);
  NEXTLETTER  
}

void writeQ() 
{
  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;
  
  pushCmd("PD");
  pushTo(x + w / 2, y);
  pushTo(x + w, y + capHeight / 2);
  pushTo(x + w, y + capHeight);
  pushTo(x, y + capHeight);
  pushTo(x, y);
  pushCmd("PU");
  pushTo(x + w / 2, y + capHeight / 2);
  pushCmd("PD");
  pushTo(x + w, y);
  NEXTLETTER  
}

void writeR() 
{
  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;
  
  pushCmd("PD");
  pushTo(x, y + capHeight);
  pushTo(x + w, y + capHeight);
  pushTo(x + w, y + capHeight / 2);
  pushTo(x, y + capHeight / 2);
  pushTo(x + w, y);
  NEXTLETTER  
}

void writeS() 
{
  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;
  
  pushCmd("PD");
  pushTo(x + w, y);
  pushTo(x + w, y + capHeight / 2);
  pushTo(x, y + capHeight / 2);
  pushTo(x, y + capHeight);
  pushTo(x + w, y + capHeight);
  NEXTLETTER  
}

void writeT()
{
  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;
  pushTo(x + w/2, y);
  pushCmd("PD");
  pushTo(x + w/2, y + capHeight);
  pushTo(x, y + capHeight);
  pushTo(x + w, y + capHeight);
  NEXTLETTER
}

void writeU()
{
  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;
  
  pushTo(x, y + capHeight);
  pushCmd("PD");
  pushTo(x, y);
  pushTo(x + w, y);
  pushTo(x + w, y + capHeight);
  NEXTLETTER
}

void writeV()
{
  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;
  
  pushTo(x, y + capHeight);
  pushCmd("PD");
  pushTo(x + w / 2, y);
  pushTo(x + w, y + capHeight);
  NEXTLETTER
}

void writeW()
{
  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;
  
  pushTo(x, y + capHeight);
  pushCmd("PD");
  pushTo(x + w / 4, y);
  pushTo(x + w / 2, y + capHeight / 2);
  pushTo(x + 3 * w / 4, y);
  pushTo(x + w, y + capHeight);
  NEXTLETTER
}

void writeX()
{
  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;
  
  pushCmd("PD");
  pushTo(x + w, y + capHeight);
  pushCmd("PU");
  pushTo(x, y + capHeight);
  pushCmd("PD");
  pushTo(x + w, y);
  NEXTLETTER
}

void writeY()
{
  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;
  
  pushCmd("PD");
  pushTo(x + w, y + capHeight);
  pushCmd("PU");
  pushTo(x, y + capHeight);
  pushCmd("PD");
  pushTo(x + w / 2, y + capHeight / 2);
  NEXTLETTER
}

void writeZ()
{
  float x = position.x;
  float y = position.y;
  float w = fontSize * 0.5;

  pushTo(x, y + capHeight);
  pushCmd("PD");
  pushTo(x + w, y + capHeight);
  pushTo(x, y);
  pushTo(x + w, y);
  NEXTLETTER
}

long sqr(long v) {
  return v*v;
