DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:fontsize

FontSize Plugin

Compatible with DokuWiki

  • 2020-07-29 "Hogfather" no
  • 2018-04-22 "Greebo" unknown
  • 2017-02-19 "Frusterick Manners" unknown
  • 2016-06-26 "Elenor Of Tsort" unknown

plugin Allow different font sizes

Last updated on
2008-04-25
Provides
Syntax

Similar to fontsize2, wrap

Tagged with !broken, style, typography

Description

This plugin allows to write text in different sizes.

Syntax

Enclose the text in ## tags to make it larger, and in ,, to make it smaller.

Add more # or , to increase or decrease the size in steps of 20%.

##this text is shown at 120% of the base size##, ###this is 140%### ####and this is 160%####
,,this is smaller, at 80%,, and ,,,this is at 60%,,,
,,if I were to put a comma after a small text,,%%,%% I would need to enclose the comma in double percent signs

Source Code

Create a directory fontsize in /wiki/lib/plugins and save the code in a syntax.php file there.

syntax.php
<?php
/**
* Font Size Plugin: Allow different font sizes
* 
* @license    GPL 3 (http://www.gnu.org/licenses/gpl.html)
* @author     Jesús A. Álvarez <zydeco [at] namedfork [dot] net>
*/
 
if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
require_once(DOKU_PLUGIN.'syntax.php');
 
class  syntax_plugin_fontsize extends DokuWiki_Syntax_Plugin {
 
	function getInfo(){
		return array(
			'author' => 'Jesús A. Álvarez',
			'email'  => 'zydeco@namedfork.net',
			'date'   => '2008-04-25',
			'name'   => 'Font Size Plugin',
			'desc'   => 'Allow different font sizes.',
			'url'    => 'https://www.dokuwiki.org/plugin:fontsize',
			);
	}
 
	function getType() { return('formatting'); }
	function getSort() { return 131; }
 
	function connectTo($mode) {
		$this->Lexer->addEntryPattern('##+(?=.*##+)',$mode,'plugin_fontsize');
		$this->Lexer->addEntryPattern(',,+(?=.*,,+)',$mode,'plugin_fontsize');
	}
 
    function postConnect() {
        $this->Lexer->addExitPattern('##+', 'plugin_fontsize');
        $this->Lexer->addExitPattern(',,+', 'plugin_fontsize');
    }
 
	function handle($match, $state, $pos, &$handler){
		switch ($state) {
			case DOKU_LEXER_ENTER:
				if ($match{1} == '#')
					$size = (strlen($match)*20)+80 .'%';
				else
					$size = 120-(strlen($match)*20) . '%';
				return array($state, $size);
			case DOKU_LEXER_UNMATCHED:	return array($state, $match);
			case DOKU_LEXER_EXIT:		return array($state, '');
		}
		return array();
	}
 
	function render($mode, &$renderer, $data) {
		if ($mode == 'xhtml') {
			list($state, $match) = $data;
			switch ($state) {
				case DOKU_LEXER_ENTER:
					$renderer->doc .= "<span style='font-size:$match;'>"; break;
				case DOKU_LEXER_UNMATCHED:
					$renderer->doc .= $renderer->_xmlEntities($match); break;
				case DOKU_LEXER_EXIT:
					$renderer->doc .= '</span>'; break;
			}
			return true;
		}
		return false;
	}
 
}
//Setup VIM: ex: et ts=4 enc=utf-8 :

Discussion

Hi. Is is me or I can't get the system to recognize a link if it's put in smalltext?

,, [[http://www.giocoestudio.it|programma]] ,,

this does not work…

Tnx!


Work neither with H1, H2, H3 etc titles :(

====== ##########big title for blind ppl########## ======

Too bad.


Hi!

You can solve this problem by patching the plugin with the function below:

    function getAllowedTypes() {
        return array('formatting', 'substition');
    }

See also synopsis for getAllowedTypes().


Hi! I have fontsize2 up and working, but fontsize does not. Have the syntax.php in the plugins folder, but the plugin does not work and does not appear in plugins in the config. Why :-?


I can not seem to get this to work for a page of text. All the line breaks stop working. Maybe because I'm using the xbr plugin?


Patching plugin works, thank you!


I wanted to link to a larger text, like

[[fs|####test####]]

but the number-signs are not resolved. I tried adding the patch above in syntax.php, but it did not work. Outside of the links, it works fine. Any idea?


24/06/2020 15:42:46 Does not seems to work with HogFather 5.3


25/09/2020 08:05 I fixed this plugin for usage with HogFather, shown below:

fontsize-hogfather.patch
--- syntax-before.php   2020-09-25 08:09:45.294662375 -0500
+++ syntax.php  2020-09-25 08:08:40.477774548 -0500
@@ -36,7 +36,7 @@
         $this->Lexer->addExitPattern(',,+', 'plugin_fontsize');
     }
 
-       function handle($match, $state, $pos, &$handler){
+       function handle($match, $state, $pos, Doku_Handler $handler){
                switch ($state) {
                        case DOKU_LEXER_ENTER:
                                if ($match{1} == '#')
@@ -50,7 +50,7 @@
                return array();
        }
 
-       function render($mode, &$renderer, $data) {
+       function render($mode, Doku_Renderer $renderer, $data) {
                if ($mode == 'xhtml') {
                        list($state, $match) = $data;
                        switch ($state) {

Apply using the following command:
patch syntax.php < fontsize-hogfather.patch

plugin/fontsize.txt · Last modified: 2020-09-25 15:21 by chemmerly