diff --git a/README.md b/README.md
index d80d855..5eaa349 100644
--- a/README.md
+++ b/README.md
@@ -109,30 +109,6 @@ var_dump(
);
```
-## GTK3
-
-### Pango
-
-Converter to GTK3-compatible Pango format
-
-#### Pango::fromGemtext
-
-``` php
-$pango = \Yggverse\Gemini\Pango::fromGemtext(
- $gemtext
-);
-```
-
-#### Pango::fromGemtextBody
-
-``` php
-$pango = \Yggverse\Gemini\Pango::fromGemtextBody(
- new \Yggverse\Gemini\Gemtext\Body(
- $gemtext
- )
-);
-```
-
## DokuWiki
Toolkit provides DokuWiki API for Gemini.
diff --git a/src/Gtk3/Pango.php b/src/Gtk3/Pango.php
deleted file mode 100644
index 3a8099a..0000000
--- a/src/Gtk3/Pango.php
+++ /dev/null
@@ -1,225 +0,0 @@
-getLines();
-
- $raw = [];
-
- $escaped = [];
-
- // Code
- $code = $body->getCode();
-
- if (count($code) % 2 == 0) // make sure tags has pairs
- {
- $i = 1;
-
- foreach ($code as $index => $capture)
- {
- // Replace code tags
- if ($i % 2 == 0)
- {
- $lines[$index] = '';
-
- // Skip code format inside the tags by raw registry
- foreach (array_slice($lines, $offset, $index - $offset) as $start => $line)
- {
- $raw[$start + $offset] = $line;
- }
- }
-
- else
- {
- if ($capture)
- {
- $lines[$index] = sprintf(
- '%s',
- self::escape(
- $capture
- )
- );
- }
-
- else
- {
- $lines[$index] = '';
- }
-
- $offset = $index + 1;
- }
-
- $escaped[] = $index;
-
- $i++;
- }
- }
-
- // H1
- foreach ($body->getH1() as $index => $value)
- {
- if (!isset($raw[$index]))
- {
- $lines[$index] = sprintf(
- '%s',
- self::escape(
- $value
- )
- );
-
- $escaped[] = $index;
- }
- }
-
- // H2
- foreach ($body->getH2() as $index => $value)
- {
- if (!isset($raw[$index]))
- {
- $lines[$index] = sprintf(
- '%s',
- self::escape(
- $value
- )
- );
-
- $escaped[] = $index;
- }
- }
-
- // H3
- foreach ($body->getH3() as $index => $value)
- {
- if (!isset($raw[$index]))
- {
- $lines[$index] = sprintf(
- '%s',
- self::escape(
- $value
- )
- );
-
- $escaped[] = $index;
- }
- }
-
- // Quote
- foreach ($body->getQuote() as $index => $value)
- {
- if (!isset($raw[$index]))
- {
- $lines[$index] = sprintf(
- '%s',
- self::escape(
- $value
- )
- );
-
- $escaped[] = $index;
- }
- }
-
- // Links
- foreach ($body->getLinks() as $index => $line)
- {
- if (!isset($raw[$index]))
- {
- $link = new \Yggverse\Gemini\Gemtext\Link(
- $line
- );
-
- if (!$address = $link->getAddress())
- {
- continue;
- }
-
- if (!$alt = $link->getAlt())
- {
- if (!$alt = $link->getDate())
- {
- $alt = urldecode(
- $address
- );
- }
- }
-
- if ($alt == $address)
- {
- $lines[$index] = sprintf(
- '%s',
- self::escape(
- $address
- ),
- self::escape(
- $alt
- )
- );
- }
-
- else
- {
- $lines[$index] = sprintf(
- '%s',
- self::escape(
- $address
- ),
- self::escape(
- urldecode(
- $address
- )
- ),
- self::escape(
- $alt
- )
- );
- }
-
- $escaped[] = $index;
- }
- }
-
- // Escape special chars for non escaped lines
- foreach ($body->getLines() as $index => $value)
- {
- if (!in_array($index, $escaped))
- {
- $lines[$index] = self::escape(
- $value
- );
- }
- }
-
- return implode(
- PHP_EOL,
- $lines
- );
- }
-
- public static function escape(
- string $value
- ): string
- {
- return htmlspecialchars(
- $value
- );
- }
-}
\ No newline at end of file