Page 1 of 1

King's Quest 8 Font

Posted: Thu Mar 24, 2016 9:20 pm
by wiaparker
Hello,

I'm currently working on polish translation of the computer game King's Quest VIII. I ask you for help, because I have a problem with opening and editing fonts that I put below. I would be grateful for help. :)

Re: King's Quest 8 Font

Posted: Sat Apr 02, 2016 7:08 pm
by WRS
i spent a bit of time on this.


do you want to make your own fonts? or add new glyphs? there is a fixed table of 256 ascii mappings which you could use for patch new glyphs.

(const32 is just an int)

Code: Select all

struct Chunk;

struct Unk
{
  ubyte Index;
  ubyte unknown;
  ubyte flags; // 0x2e?
  ubyte unknown_2;

  Const32 e(EQ, 0x2e);
};

struct Font(int max)
{
  local int pos = FTell();
  Const32 a(EQ, 2);
  Const32 b(EQ, 65);
  Const32 c(EQ, 0);

  uint MappedItemCount;

  uint aa, bb; // aa>=bb

  Const32 another(EQ, 255);
  Const32 z(EQ, 0);

  uint cc;

  Const32 d(EQ, 65536);
  Const32 e(EQ, 65536);
  Const32 f(EQ, 0);
  
  uint MapSize;

  short map[MapSize]; // -1 is unmapped


  Unk mapped[MappedItemCount] <optimize=false>;

  struct CH
  {
    char Name[4]; uint unknown; // not size!
  };

  CH test;
  
while((FTell()-pos) < max)
{
  Chunk blah;
}

  ubyte Data[max - (FTell()-pos)];
};

struct Chunk
{
  char Name[4]; // can be none

  if( Name[0] == 0 ) Exit(0);
  uint Size;

  if(Name == "PFON")
  {
     Font Data(Size);
  }
  else if(Name == "PBMA")
  {
     // head/data
     ubyte Data[Size];
  }
  else if(Name == "DETL")
  {
    // ??
ubyte Data[Size];
  }
  else if(Name == "PBMP")
  {
    // nothing this size is incorrect
  }
  else 
  { 
    ubyte Data[Size];
  }
};

while(!FEof())
{
  Chunk chunk;
}

Re: King's Quest 8 Font

Posted: Sun Feb 12, 2017 8:57 pm
by wiaparker
I would like to patch existing glyphs. Can anyone help?